我正在编写一个与PHPUnit一起使用的自定义断言,但每当我放置一个自定义断言时,我都会看到两(2)条错误消息.
代码:
$this->_testCase->assertThat(
$hasMessageCode,
$this->_testCase->isTrue(),
"Failed asserting that API response contains a message whose code is {$code}."
);
Run Code Online (Sandbox Code Playgroud)
输出:
1) ApiTest::testFoo
Failed asserting that API response contains an error whose code is REG012.
Failed asserting that false is true.
Run Code Online (Sandbox Code Playgroud)
有什么办法我只能输出自定义信息并跳过第二个?
我假设 PHPUnit 立即评估测试然后输出,如果它创建某种稍后评估的列表,这可能不起作用。这不是最干净的解决方案,但您可能会弄乱输出缓冲区。
public function whateverFunctionYouHave($hasMessageCode) {
ob_start();
$this->_testCase->assertThat(
$hasMessageCode,
$this->_testCase->isTrue(),
"Failed asserting that API response contains a message whose code is {$code}."
);
$out = ob_get_contents();
ob_end_clean();
$expectedDefaultMessage = "Failed asserting that false is true.";
if (strpos($out, $expectedDefaultMessage) !== false) {
$out = str_replace($expectedDefaultMessage, "");
echo $out;
}
}
Run Code Online (Sandbox Code Playgroud)
聚会有点晚了,但是……那应该有用。