Testy PHPUnit z zamknięciami
Próbowałem napisać test dla metody klasy, która wywołuje metodę próbną z zamknięciem. Jak zweryfikowałbyś wywołanie zamknięcia?
Wiem, że byłbyś w stanie stwierdzić, że parametr jest instancjąClosure
. Ale jak sprawdziłbyś cokolwiek na temat zamknięcia?
Na przykład, jak zweryfikowałbyś przekazaną funkcję:
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);
}
}
Nie możesz porównać dwóch zamknięć w PHP. Czy w PHPUnit istnieje sposób na wykonanie przekazanego parametru lub w jakiś sposób go zweryfikować?