Test doubles: dummy, stub, spy, mock, fake — в чём разница?
Суть
Test double — любой объект, подменяющий реальную зависимость в тесте (термин Джерарда Месароша). Пять видов различаются тем, что они делают с вызовами:
- Dummy — заглушка, чтобы заполнить параметр; никогда не используется (
UIView()вместо настоящего контейнера). - Stub — возвращает заранее заданные ответы; управляет входными данными для тестируемого кода.
- Spy — записывает, как его вызывали (аргументы, количество), проверку делает тест.
- Mock — заранее знает, какие вызовы ожидать, и сам проверяет ожидания; ошибка приходит из мока.
- Fake — рабочая упрощённая реализация: in-memory база вместо SQLite, словарь вместо
UserDefaults.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep