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