当前,我正在为框架编写测试,测试失败时我们通常使用自定义错误消息,并添加一些有用的调试信息:
$this->assertEquals($check, $result,
'Class::method returned the wrong result with argument XXX');
Run Code Online (Sandbox Code Playgroud)
但是我希望在检查函数调用时自定义错误消息:
$mock->expects($this->any())->method('foobar')->with($this->equals('dummy'));
Run Code Online (Sandbox Code Playgroud)
当上述断言不成立时,我得到标准消息。
我在PhpUnit文档中进行了搜索,但找不到自定义错误消息的方法,我有什么遗漏吗?
这不是有意的,但你可以(ab)使用这种方式,PHPUnit 引发期望失败:它抛出一个PHPUnit_Framework_ExpectationFailedException.
因此,只要这些内部结构不改变1,您就可以使用:
$mock->expects($this->any())->method('foobar')->with($this->equals('dummy'));
try {
// your test code here
} catch (\PHPUnit_Framework_ExpectationFailedException $e) {
$this->fail('your custom message here');
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果您对同一测试代码有多种期望,那就不再那么容易了,您必须$e->getMessage()相应地检查和更改您的消息。这是一种冗长的程度(也是错误的根源),我不会仅仅为了更改已经很解释性的消息而承担责任。
1) phpunit-mock-objects 包的当前版本:3.0.6。请参阅https://github.com/sebastianbergmann/phpunit-mock-objects/tree/3.0/src/Framework/MockObject/Matcher