Estoy escribiendo pruebas de unidad para los métodos de controlador ASP.NET MVC.¿Debo usar AutoMapper en mis pruebas unitarias?
Esos controladores tienen una dependencia en IMapper
- una interfaz que he creado para abstraer AutoMapper, pasado a través de la inyección del constructor usando Castle Windsor.
Los métodos de acción usan IMapper
para asignar objetos de dominio a objetos ViewModel y viceversa, con el objetivo de mantener las cosas SECAS y mantener los métodos de acción concisos.
En mis pruebas de unidad, debo
Configurar AutoMapper con las fijaciones correctas (que están construidos con perfiles AutoMapper, por lo comprobable y reutilizables entre proyectos web y los exámenes de unidad) y pasar esa sesión como adecuada implementación de AutoMapper de
IMapper
.Pase en objetos simulados (estoy usando Moq) para la instancia
IMapper
, dependiendo de la prueba (esto significaría duplicar algún trabajo en el código de configuración de prueba para asegurarse de que los objetos devueltos del mapeador simulado se relacionan con el objetos que el mapeador falso simula hacer un mapa).Configurar manualmente AutoMapper con solo las asignaciones que creo que necesitaré para cada prueba (mucho trabajo y significa que no estoy probando las asignaciones que realmente estarán en uso).
¿Cuál es la opinión sobre el uso del código de infraestructura en las pruebas unitarias? ¿En qué punto se convierte en una prueba de integración (es decir, prueba la integración de AutoMapper y mis controladores)?
Parece que 2 es la vista purista, aunque creo que necesito aprender más sobre Moq y cómo lograr que devuelva valores relacionados con los valores reales pasados a los métodos que se burlan.
si está utilizando un patrón de repositorio, le sugiero que ... http://rileytech.net/post/2010/08/17/Mock-Utility-creating-those-basic-services.aspx - - usa los dos últimos archivos o úsalo como un ejemplo completo :-) – jeriley