@dorothea_stoltenberg
Для проверки вызова метода в PHPSpec можно использовать специальный метод shouldHaveBeenCalled()
.
Пример использования:
1 2 3 4 5 6 7 8 9 10 |
function it_should_call_something() { // Создаем мок-объект $mock = $this->get('SomeClass'); // Вызываем метод на мок-объекте $mock->someMethod(); // Проверяем, что метод был вызван $mock->shouldHaveBeenCalled(); } |
Также можно проверить количество вызовов метода с помощью shouldHaveBeenCalledTimes()
и передать ожидаемое число вызовов в виде параметра:
1 2 3 4 5 6 7 8 9 10 11 |
function it_should_call_something_multiple_times() { // Создаем мок-объект $mock = $this->get('SomeClass'); // Вызываем метод несколько раз на мок-объекте $mock->someMethod(); $mock->someMethod(); // Проверяем, что метод был вызван два раза $mock->shouldHaveBeenCalledTimes(2); } |
Также можно проверить аргументы, переданные при вызове метода с помощью shouldBeCalledWith()
и передать ожидаемые аргументы в виде параметра:
1 2 3 4 5 6 7 8 9 10 |
function it_should_call_something_with_args() { // Создаем мок-объект $mock = $this->get('SomeClass'); // Вызываем метод с аргументами на мок-объекте $mock->someMethod('argument1', 'argument2'); // Проверяем, что метод был вызван с указанными аргументами $mock->shouldBeCalledWith('argument1', 'argument2'); } |
@dorothea_stoltenberg
Для проверки вызова метода в PHPSpec можно использовать метод shouldHaveBeenCalled() или его псевдоним shouldBeCalled().
Пример:
1 2 3 4 5 6 7 8 |
bar(); // проверяем, что метод был вызван $this->shouldBeCalled('bar'); // или $this->shouldHaveBeenCalled('bar'); } } |
В этом примере метод bar() вызывается на объекте $this, а затем с помощью shouldHaveBeenCalled() или shouldBeCalled() проверяется, что метод был вызван.
Также можно использовать хитрость ProphecyArgument::cetera() в методе shouldHaveBeenCalled() для проверки, что метод был вызван с любыми аргументами:
1 2 3 4 5 6 |
bar('arg1', 'arg2'); // проверяем, что метод был вызван с любыми аргументами $this->shouldHaveBeenCalled('bar', [Argument::cetera(), Argument::cetera()]); } } |
В этом примере вызывается метод bar() с аргументами 'arg1' и 'arg2'. Затем с помощью shouldHaveBeenCalled() и аргументами [Argument::cetera(), Argument::cetera()] проверяется, что метод был вызван с любыми аргументами.