Тестирование phpUnit, метод подставных объектов

volnistii11

Подскажите пожалуйста, как реализовать метод подставных объектов, если можно то с примером. Или скиньте плс статью, где это рассказывается на примере phpUnit 6.*

 

don.bidon

В Гугле «phpunit mock», достаточно статей и на русском языке,тот же Хабр. Не ясна любовь к 6-ой версии ))

 

volnistii11

да везде описывается просто заглушка, а не метод подставных объектов

 

don.bidon

Так метод подменял:

PHP:
  1.         $stub = $this->getMockBuilder(Core::class)
  2.             ->setMethodsExcept(array_diff(get_class_methods(Core::class), [‘sendResponse’]))
  3.             ->addMethods([‘getResponse’])
  4.             ->setConstructorArgs([self::$config, new Request(‘post’, [‘post’ => $request])])
  5.             ->getMock();
  6.         $stub
  7.             ->method(‘getResponse’)
  8.             ->willReturnCallback(fn () => $this->response);
  9.         $stub
  10.             ->method(‘sendResponse’)
  11.             ->will($this->returnCallback(function (array $response): void {
  12.                 $this->response = $response;
  13.             }));
 

volnistii11

А можете объяснить в чем разница в коде просто заглушки от метода подставных объектов? Я понимаю, что подставной
объект должен при вызове менять свои внутренние свойства, которые затем нужно проверить. Но не понимаю, где видно в коде, что это именно метод подставных объектов? То есть я не понимаю принципиальную разницу именно в коде.
Как я понял, у вас здесь просто реализация заглушки?

 

Дюран

У мока есть ожидания — методы вроде shouldBeCalled(), expects(), т.е. на моке еще идут проверки того что с ним происходит

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *