Я пишу модульные тесты для методов контроллера ASP.NET MVC.
Эти контроллеры зависят от IMapper
- интерфейса, который я создал для абстрагирования AutoMapper и передаваемого через конструктор с использованием Castle Windsor.
Методы действий используют IMapper
для отображения из объектов домена в объекты ViewModel и обратно, с целью сохранить СУХОЙ и сохранить методы действия краткими.
В моих модульных тестах я должен
Сконфигурируйте AutoMapper с правильными привязками (они построены с использованием профилей AutoMapper, которые можно тестировать и использовать повторно между веб-сайтами и проектами модульного тестирования) и передайте это как правильную реализацию AutoMapper IMapper
.
Передача фиктивных объектов (я использую Moq) для экземпляра IMapper
, в зависимости от теста (это будет означать дублирование некоторой работы в коде настройки теста, чтобы убедиться, что объекты возвращены из макета макета относятся к объектам, которые макет картографирует для отображения).
Ручная настройка AutoMapper только с отображениями, которые, я думаю, понадобятся для каждого теста (много работы и означает, что я не проверяю сопоставления, которые действительно будут использоваться).
Каково мнение об использовании кода инфраструктуры в модульных тестах? В какой момент он становится интеграционным тестом (т.е. тестирует интеграцию AutoMapper и моих контроллеров)?
Мне кажется, что 2 - это пуристическая точка зрения, хотя я думаю, что мне нужно больше узнать о Moq и о том, как заставить его возвращать значения, которые относятся к фактическим значениям, передаваемым в методы, которые он обрабатывает.