@jorge
В PHPSpec проверка взаимодействия с внешними зависимостями выполняется с помощью спецификаций (Specifications) и моков (Mocks).
Для проверки взаимодействия с внешними зависимостями в PHPSpec, вы можете использовать следующие шаги:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class MyServiceSpec extends ObjectBehavior { function it_calls_method_on_external_dependency() { // arrange $dependency = $this->getDependencyMock(); $this->beConstructedWith($dependency); // act $this->performAction(); // assert $dependency->method()->shouldBeCalled(); } } |
1 2 3 4 5 6 7 8 |
private function getDependencyMock() { $dependency = $this->prophesize(ExternalDependency::class); // здесь могут быть установлены ожидания на методы внешней зависимости return $dependency->reveal(); } |
1 2 3 4 5 6 7 8 |
private function getDependencyMock() { $dependency = $this->prophesize(ExternalDependency::class); $dependency->method()->shouldBeCalled(); return $dependency->reveal(); } |
В результате, PHPSpec проверит, что внешняя зависимость была взаимодействована, вызывая соответствующий метод, используя установленные ожидания.
Ожидание shouldBeCalled()
необходимо добавлять только в том случае, если взаимодействие с внешней зависимостью должно произойти. Если взаимодействие не должно происходить, можно использовать ожидание shouldNotBeCalled()
.