Тестирование PHPUnit с замыканиями
Это было сделано при попытке написать тест для метода класса, который вызывает фиктивный метод с замыканием. Как бы вы подтвердили, что закрытие вызывается?
Я знаю, что вы могли бы утверждать, что параметр является экземпляромClosure
, Но как бы вы проверить что-нибудь о закрытии?
Например, как бы вы проверили переданную функцию:
class SUT {
public function foo($bar) {
$someFunction = function() { echo "I am an anonymous function"; };
$bar->baz($someFunction);
}
}
class SUTTest extends PHPUnit_Framework_TestCase {
public function testFoo() {
$mockBar = $this->getMockBuilder('Bar')
->setMethods(array('baz'))
->getMock();
$mockBar->expects($this->once())
->method('baz')
->with( /** WHAT WOULD I ASSERT HERE? **/);
$sut = new SUT();
$sut->foo($mockBar);
}
}
Вы не можете сравнить два замыкания в PHP. В PHPUnit есть способ выполнить переданный параметр или каким-то образом проверить его?