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