Подтвердить что ты не робот

Mocks и Столбики

Я действительно не понимаю, что такое Mocks and Stubs. Я хочу знать, когда, почему и как мы используем Mocks в наших тестовых случаях. Я знаю, что есть хорошие рамки для Mocks и Stubs в Ruby on Rails, но, не зная цели, я не хочу использовать их в своем приложении.

Можете ли вы прояснить вопрос о Mocks и Stubs? Пожалуйста помоги.

4b9b3361

Ответ 1

Мой очень упрощенный ответ:

  • mocks - объекты, имеющие аналогичный интерфейс, как что-то еще
  • заглушки являются поддельными методами и возвращают определенный ответ

Мы оба пытаемся добиться того же: мы хотим изолировать отдельный блок (модель/представление/контроллер/модуль). Например. когда мы тестируем контроллер, мы не хотим тестировать нашу модель, поэтому мы используем макет. Мы хотим убедиться, что правильные методы вызваны, например. find. Итак, на наш макет, у нас есть заглушка, которая вернет что-то предопределенное, фактически не перейдя в базу данных.

Итак, мы проверяем ожидания: методы, которые мы ожидаем назвать (на других единицах), фактически не называя их. Тест на этот конкретный метод должен был быть рассмотрен в его собственном тесте.

Ответ 2

Согласно статье Фаулера mocks не являются заглушками, заглушки являются поддельными методами, независимыми от внешних вызовов, в то время как mocks - это поддельные объекты с запрограммированными реакциями на вызовы.

Отказывание более специфично и связано с объектами: если определенные параметры переданы, то объект возвращает определенные результаты. Поведение объекта имитируется или "издевается".

Stubbing более общий и связанный с методом: заштрихованный метод обычно возвращает всегда тот же результат для всех параметров. Поведение метода заморожено, консервировано или "заколочено".

Ответ 3

Mocks используются при тестировании на основе взаимодействия для проверки поведения. С макетом вы можете утверждать, что тестируемый метод называется другим методом. Например, я могу захотеть убедиться, что объект контроллера вызывает репозиторий для получения некоторых данных.

Штыри используются в государственном тестировании для настройки определенного состояния приложения. В отличие от mocks, вы не беспокоитесь, был ли вызов выполнен или нет. Например, если вы тестировали некоторый код репозитория, вы можете настроить метод заглушки, чтобы убедиться, что репозиторий правильно обрабатывает случай, когда соединение с базой данных закрыто.