Ваша насмешка занимает место соавтора.В идеале он делает одну из двух вещей:
- Предоставление информации или данных
- Выполнение работы
Когда издевательство предоставляет информацию или данные, достаточночто это должен быть заглушка .Вы можете настроить возвращаемое значение макета на требуемую информацию.Это должно быть частью Arrange .
Когда макет выполняет работу, делегирование может быть проверено .Вот почему у вас есть Assert .
То, что вы делаете со строгим взаимодействием, - это обеспечение того, чтобы ожидалось каждое отдельное взаимодействие, в основном говоря: «Вот что я ожидаю, и есличто-нибудь еще случается, это неправильно. "Это другой вид тестирования для Act, Arrange, Assert, который говорит: «В этом контексте, когда я делаю это, я должен получить такой результат».
С «милой» насмешкой вынужно беспокоиться только о взаимодействиях, которые вас интересуют. Так, например, если я являюсь контроллером и ищу какую-то информацию в одном репозитории, проверяю ее с помощью валидатора, а затем сохраняю результат в другом репозитории,У меня может быть несколько тестов:
- один, чтобы проверить, что я проверяю правильную информацию
- один, чтобы проверить, как я реагирую на неправильную проверку
- и один, чтобы проверить, что я сохраняю элемент.
При строгой насмешке вы должны выполнить все ожидания, даже если все, что вас интересует, это "сохранить"».Используя симпатичный макет, мы можем разделить различные аспекты поведения и сосредоточиться только на одном из них в каждом тесте.
В качестве дополнительного бонуса, симпатичные макеты позволяют вам:
- Учитывая контекст
- Когда это событие происходит
- Тогда этот результат должен произойти
В то время как строгие насмешки заставляют вас делать:
- Учитывая контекст
- Ожидайте, что что-то случится
- Когда я выполню событие
- Затем вернитесь и прочитайте, каким должен был быть результат.
Первый из них обычно считается более читабельным.