如何编写自定义断言,如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
有一些documentation in the manual,但它似乎没有涵盖这一点。