Я как раз читал сообщение Мартина Фаулера Mocks Aren't Stubs. Он определяет различные тестовые двойники (или, скорее, ссылается на книгу шаблонов xUnit Джерарда Месароса):
- Фиктивные объекты передаются, но на самом деле никогда не используются. Обычно они используются просто для заполнения списков параметров.
- Поддельные объекты на самом деле имеют работающие реализации, но обычно требуют некоторого сокращения, что делает их непригодными для производства (хорошим примером является база данных в памяти).
- Заглушки предоставляют стандартные ответы на звонки, сделанные во время теста, обычно не отвечая ни на что, кроме того, что запрограммировано для теста. Заготовки также могут записывать информацию о вызовах, например, заглушку шлюза электронной почты, которая запоминает «отправленные» сообщения или, может быть, только то, сколько сообщений «отправлено».
- Моки - это ... объекты, предварительно запрограммированные с ожиданиями, которые формируют спецификацию вызовов, которые они, как ожидается, получат.
Первая часть моего вопроса: действительно ли это авторитетно? Широко ли используется и понят этот язык?
Вторая часть моего вопроса заключается в том, что мой выбор фреймворка для насмешек, Mockito, делает легко стереть грань, конечно, между макетами и заглушками.
- Все называется «макетом». Вызывая метод Mockito.mock () или используя аннотацию @Mock, вы используете слово «mock» для создания mock-объектов, заглушек, а иногда и фиктивных (если простое «новое» не подойдет). Исключением является «шпион», который может быть использован для создания чего-то вроде «подделки», но может также использоваться для обертывания тестируемой системы.
- Даже если вас не волнует имя метода для создания тестового двойника, этот дубль можно проверить (или нет), и вы можете включить захват на этапе проверки, который, похоже, включает некоторые вещи, которые будет делать заглушка. (запоминание сделанных звонков) и имитация (проверка того, что были сделаны определенные ожидаемые звонки).
Причина, по которой я спрашиваю, заключается в том, что я пытаюсь назвать своих двойников в соответствии с четырьмя вещами, которые я вижу выше, но затем иногда путаюсь, действительно ли что-то играет роль заглушки или имитации. Итак, это недостаток Mockito, или это просто то, как все развивались, и различие на самом деле не важно?