我如何编写自定义断言,例如assertFoo($expected, $actual)
,其行为类似于关于错误“堆栈跟踪”的内置断言?
我目前定义了以下方法(在扩展的类中)PHPUnit_Framework_TestCase
):
public static function assertFoo($expected, $actual) {
self::assertEquals($expected, $actual);
}
如果我从测试中调用它并且测试失败,我会在调用堆栈中得到两项:
1) PreferencesTest::testSignupTeacher
Failed asserting that 5 matches expected 3.
/vagrant/myproject/tests/integration/PreferencesTest.php:17
/vagrant/myproject/tests/integration/PreferencesTest.php:136
17号线是哪里assertFoo()
调用内置的assertEquals()
并失败; 136号线在那里assertFoo()
叫做。
如果我将测试更改为调用assertEquals()
直接,我只得到一个:
1) PreferencesTest::testSignupTeacher
Failed asserting that 3 is true.
/vagrant/myproject/tests/integration/PreferencesTest.php:136
有一些手册中的文档 http://www.phpunit.de/manual/current/en/extending-phpunit.html#extending-phpunit.custom-assertions,但似乎没有涵盖这一点。