我如何编写一个自定义断言,例如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
手册中有一些文档,但似乎没有涵盖这一点。