Чем mock отличается от stub в phunit?

Mock - используется для проверки состояния объекта, например, чтобы проверить был ли вызван метод
Stub - используется для возвращения ложных (тестовых) данных

Вопрос: следующий код это mock или stub? Мы проверяем вызов метода, но в то же время возвращаем ложные данные
$observer = $this->createMock(Observer::class);

        $observer->expects($this->once())
        ->method('abstractMethod')
        ->will($this->returnValue('wow'));
  • Вопрос задан
  • 1982 просмотра
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
https://vc.ru/flood/44925-za-chto-ya-cenyu-testiro...

Главное различие между stubs и mocks заключается в том, что в одном случае мы управляем состоянием, а в другом - поведением.

Когда мы используем mocks, мы заменяем весь модуль на mock (ложный, тестовый объект, имитирующий настоящий). А stub - это функция, которая всегда выводит один и тот же результат, вне зависимости от того, что было подано на вход. Mocks используют для того, чтобы проверить, была ли функция вызвана с правильными аргументами, а stubs, чтобы протестировать, как функция работает с полученным ответом. Стабы нужны для проверки состояния метода, а моки используются для регулировки поведения.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы