@william_stoltenberg
Для проверки вызова метода на мок-объекте в PHPSpec вы можете использовать метод shouldHaveBeenCalled()
или shouldNotHaveBeenCalled()
.
Например, представим, что у вас есть класс Foo
, который зависит от класса Bar
. Вы можете создать мок-объект Bar
и проверить, был ли вызван его метод doSomething()
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
use Foo; use Bar; class FooSpec extends ObjectBehavior { function it_calls_bar_do_something_method() { $barMock = $this->prophesize(Bar::class); $foo = new Foo($barMock->reveal()); $foo->doSomethingWithBar(); $barMock->doSomething()->shouldHaveBeenCalled(); } } |
В этом примере метод doSomethingWithBar()
в классе Foo
должен вызывать метод doSomething()
на объекте Bar
. С помощью метода shouldHaveBeenCalled()
мы проверяем, был ли этот метод вызван.
Если вы хотите проверить, что метод не был вызван, используйте метод shouldNotHaveBeenCalled()
:
1
|
$barMock->doSomething()->shouldNotHaveBeenCalled(); |
Таким образом, вы можете проверить вызов метода на мок-объекте в PHPSpec.
@william_stoltenberg
В PHPSpec для проверки вызова метода на мок-объекте можно использовать метод shouldHaveBeenCalled()
в сочетании с методом-шпионом shouldHaveReceived()
.
Пример использования метода shouldHaveBeenCalled()
:
1 2 3 4 5 6 |
$mock = $this->prophesize(MyClass::class); $instance = $mock->reveal(); $instance->myMethod(); $mock->myMethod()->shouldHaveBeenCalled(); |
В этом примере создается мок-объект с использованием метода prophesize()
из библиотеки Prophecy. Затем вызывается метод myMethod()
у экземпляра класса, на котором вы хотите проверить вызов метода. После этого вызывается метод shouldHaveBeenCalled()
, чтобы проверить, что метод был вызван.
Пример использования метода-шпиона shouldHaveReceived()
:
1 2 3 4 5 6 |
$mock = $this->prophesize(MyClass::class); $instance = $mock->reveal(); $instance->myMethod('param1', 'param2'); $mock->shouldHaveReceived('myMethod')->with('param1', 'param2'); |
В этом примере вызывается метод myMethod()
с параметрами у экземпляра класса. Затем вызывается метод-шпион shouldHaveReceived()
, чтобы проверить, что метод был вызван с указанными параметрами.
Оба метода можно использовать для проверки вызова метода с различными параметрами и в различных комбинациях. Вы также можете комбинировать эти методы с другими методами ассертов PHPSpec для более сложных проверок вызова методов на мок-объекте.