que estoy haciendo TDD durante bastante tiempo . Estoy haciendo TDD con ASP.NET MVC por más de un año.
Empecé con las reglas canónicas: "no hay línea de código sin pruebas de unidad", así que probé todo, incluidos los controladores. Los controladores deben ser probados, este fue uno de los objetivos del framework MVC: hacer que esas cosas sean comprobables.
Para aplicaciones pequeñas que funcionan muy bien. Casi toda la lógica se coloca dentro del controlador, todo muy bien probado.
Pero mientras continué con MVC empecé a cambiar de opinión. Intento mantener los controladores tan delgados como sea posible. Lo ideal es nada más que delegar la llamada a algún objeto comercial y envolver los resultados. El resto es por filtros.
¡Eso funcionó muy bien para mí también! Tengo ahora un objeto comercial que se implementan/prueban por separado, por lo que el controlador es solo un punto de integración. No hay razón para probar el punto de integración ya que es demasiado pequeño.
En cuanto a las pruebas de integración: Todavía no he encontrado la situación, donde realmente la necesito. No olvides que los controladores dependen siempre de las abstracciones que inyectas por constructor. Siempre y cuando tengas buenas suposiciones sobre cómo funcionan estas abstracciones, creas pruebas unitarias adecuadas. Como fallaste, solo corrigaste las pruebas unitarias.
Las pruebas de integración son importantes y útiles, pero intento crear las menos posibles.
¿Qué significa servicios? – user972959