@marlen
Для проверки вызова приватного метода в PHPSpec можно использовать метод shouldHaveReceived
в сочетании с методом __call
класса ProphecyProphecyObjectProphecy
.
Вот пример использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
use PhpSpecObjectBehavior; class MyClassSpec extends ObjectBehavior { function it_should_call_private_method() { $this->beAnInstanceOf('MyClass'); // Создаем фальшивый объект класса MyClass $this->beConstructedWith(1); // Получаем фальшивый объект класса MyClass $myClass = $this->getWrappedObject(); // Создаем фальшивый объект пропси $myClassProphecy = $this->prophesize('MyClass'); // Настраиваем фальшивый объект пропси $myClassProphecy->somePrivateMethod()->shouldBeCalled(); // Получаем фальшивый объект пропси $myClassProphecyObject = $myClassProphecy->reveal(); // Вызываем приватный метод класса MyClass $this->callPrivateMethod($myClassProphecyObject); // Проверяем, был ли вызван приватный метод $myClassProphecy->shouldHaveReceived('somePrivateMethod')->once(); } } |
В этом примере мы создаем фальшивый объект класса MyClass
и настраиваем его приватный метод somePrivateMethod
на ожидание вызова. Затем, мы вызываем приватный метод callPrivateMethod
в нашем классе MyClass
с помощью фальшивого объекта, и после этого проверяем, был ли приватный метод вызван с помощью метода shouldHaveReceived
.