Пришло время попытаться написать тест для метода класса, который вызывает метод макета с закрытием. Как бы вы подтвердили, что закрытие называется?
Я знаю, что вы сможете утверждать, что этот параметр является экземпляром 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 выполнить параметр, переданный или каким-то образом проверить его?