Как проверить вызов приватного метода в PHPSpec?

Пользователь

от marlen , в категории: PHP , 10 месяцев назад

Как проверить вызов приватного метода в PHPSpec?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от dan_farrell , 10 месяцев назад

@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.