Как написать собственное утверждение PHPUnit, которое ведет себя как встроенное утверждение?
Как я могу написать собственное утверждение, как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
Есть некоторыедокументация в руководстве, но это, кажется, не покрывает это.