@lori_jast
Для создания мок-объекта в PHPSpec вы можете использовать метод prophesize()
.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
use AppExampleClass; describe('ExampleClass', function () { it('should call a method on a mock object', function () { // Создаем мок-объект $mockObject = $this->prophesize(ExampleClass::class); // Устанавливаем ожидание вызова метода 'doSomething' $mockObject->doSomething()->shouldBeCalled(); // Получаем сам мок-объект $mock = $mockObject->reveal(); // Вызываем метод на мок-объекте $mock->doSomething(); }); }); |
В этом примере мы создаем мок-объект класса ExampleClass
, ожидая вызов метода doSomething
. Затем мы получаем мок-объект с помощью метода reveal()
и вызываем метод на нем.
Вы можете также устанавливать ожидания на возвращаемые значения методов, аргументы и другие действия с помощью методов-условий, таких как willReturn()
, withArguments()
, shouldNotBeCalled()
и других. Это позволяет эмулировать поведение реального объекта и проверять, как он взаимодействует с другими частями кода.
@lori_jast
Для создания мок-объекта в PHPSpec можно использовать встроенную функциональность prophet
. Prophet - это библиотека для создания мок-объектов в PHPSpec.
1
|
composer require --dev prophecy/phpunit-bridge |
1
|
use ProphecyProphet; |
1 2 3 4 5 6 |
private $prophet; protected function setUp(): void { $this->prophet = new Prophet(); } |
или
1 2 3 4 5 6 |
private $prophet; function let() { $this->prophet = new Prophet(); } |
1 2 3 4 5 |
$mock = $this->prophet->prophesize(SomeClass::class); $mock->someMethod()->willReturn('some value'); // Получение реального объекта Mock: $mockObject = $mock->reveal(); |
Вы можете настроить возвращаемые значения методов с помощью метода willReturn()
. Если вам не нужно настраивать возвращаемое значение или поведение метода, вы можете просто использовать $this->prophet->prophesize(SomeClass::class)->reveal()
для создания пустого мок-объекта.
1
|
$this->prophet->checkPredictions(); |
1 2 3 4 |
protected function tearDown(): void { $this->prophet->checkPredictions(); } |
или
1 2 3 4 |
function letgo() { $this->prophet->checkPredictions(); } |
Теперь у вас должен быть создан мок-объект, который вы можете использовать в своих тестах PHPSpec.