PHPUnit自定义断言消息

Bru*_*uno 5 php phpunit

我正在编写一个与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)

有什么办法我只能输出自定义信息并跳过第二个?

All*_*nph 0

我假设 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)

聚会有点晚了,但是……那应该有用。