Киви: конкретная разница между mock и nullMock?

Я использую Kiwi в проекте и не совсем понимаю, когда использовать mock, а когда nullMock. Вот что в настоящее время предоставляет документация Kiwi:

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

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

В каком сценарии может проявиться эта разница?


person H K    schedule 23.04.2015    source источник


Ответы (1)


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

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

Это связано с преимуществами и недостатками:

  • тесты с использованием null mocks могут скрывать тонкие ошибки, поскольку вы можете забыть проверить угловой случай, вызванный одним из «других» методов.
  • тесты с использованием null mocks разрабатываются быстрее, так как вам не нужно отслеживать каждый метод, который вызывает тестируемый метод, что также нехорошо, поскольку вы создаете сильную связь между тестом и вашим кодом, что усложняет рефакторинг
person Cristik    schedule 23.04.2015