Какие возможности предоставляет PHPSpec для мокирования объектов?

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

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

Какие возможности предоставляет PHPSpec для мокирования объектов?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от ottilie.farrell , 10 месяцев назад

@forest 

PHPSpec предоставляет несколько встроенных возможностей для мокирования объектов:

  1. Создание заглушки объекта (Stub): PHPSpec позволяет создавать заглушки объектов с помощью метода $this->prophesize(). Заглушки могут возвращать предопределенные значения и имитировать поведение реальных объектов.


Пример:

1
2
$object = $this->prophesize(ObjectClass::class);
$object->someMethod()->willReturn('someValue');


  1. Создание поддельных объектов (Mocks): PHPSpec позволяет создавать поддельные объекты с помощью метода $this->getMock(). Поддельные объекты могут проверять, вызывались ли на них определенные методы и с какими аргументами.


Пример:

1
2
3
4
$object = $this->getMock(ObjectClass::class);
$object->expects($this->once())
    ->method('someMethod')
    ->with($this->equalTo('someArgument'));


  1. Интеграция с другими библиотеками: PHPSpec также может использовать другие библиотеки для мокирования, такие как Prophecy или PHPUnit. Это позволяет использовать расширенные возможности, такие как создание моков с ограничениями и проверками.


Пример использования Prophecy:

1
2
3
$object = $this->prophesize(ObjectClass::class);
$object->someMethod()->willReturn('someValue');
$mock = $object->reveal();


Однако, следует заметить, что PHPSpec не поддерживает полное мокирование объектов, как это делает PHPUnit или Mockery. Вместо этого, PHPSpec пропагандирует написание спецификаций для реальных объектов, взаимодействуя с их реальной реализацией.

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

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

@forest 

PHPSpec предоставляет несколько инструментов и возможностей для мокирования объектов:

  1. Генерация тестового двойника (Dummy) объекта: PHPSpec позволяет создать объект-заглушку, который может использоваться для заполнения зависимостей объекта, но без вызова его методов.
  2. Генерация шпиона (Spy) объекта: PHPSpec позволяет создать объект-шпион, который может отслеживать вызовы методов и аргументы, переданные в эти методы. Шпион может быть использован для проверки корректности вызовов методов объекта.
  3. Мокирование объекта (Mock): PHPSpec предлагает объекты-моки, которые заменяют реальные объекты и могут имитировать их поведение. Моки позволяют устанавливать ожидания на вызовы методов и проверять, что эти ожидания были выполнены.
  4. Создание двойников через интерфейсы: PHPSpec может автоматически генерировать заглушки и моки на основе интерфейсов. Это упрощает создание и использование тестовых двойников.


В целом, PHPSpec предлагает удобные инструменты для мокирования объектов, которые позволяют проще и эффективнее тестировать код ваших приложений.