Recientemente en una entrevista, una de las preguntas fue '¿Por qué usamos MVC?' ¡Acabo de responder que está mucho más cerca de cómo están muchos de los sistemas del mundo real! Explicaron los beneficios que tiene cuando se trata de Mantenimiento, Escalabilidad, etc. Pero no estaban convencidos y finalmente me dijeron que MVC se usa principalmente ya que "permite pruebas unitarias fáciles".
Si bien sé que es un punto válido, aún dudo si es la razón principal porque (i) incluso si decido no escribir Casos de prueba unitarios, MVC es una opción probable (ii) Muchos sistemas GUI donde hay Casos de prueba unitarios no existen seguir MVC.
Entonces, la pregunta es '¿La prueba de unidad es el objetivo principal del patrón MVC?'
EDITAR: Supongo que podrían estar mencionando la facilidad del desarrollo impulsado por pruebas / escribir NUnit Testcases. Esto se debe a que podemos escribir casos de prueba para el Modelo (siempre que la Vista refleje exactamente los cambios de estado del Modelo). Por favor, corríjame si estoy equivocado.
Respuestas:
El objetivo principal sería la "separación de preocupaciones", ya que el modelo, la vista y el controlador tienen responsabilidades distintas.
El autor del artículo original de Xerox PARC afirma que:
Si las pruebas unitarias fueran el objetivo principal, uno sería capaz de ver fácilmente las vistas unitarias. Una mirada al panorama de los proyectos / marcos de pruebas unitarias revelaría que es bastante contrario a la afirmación realizada. Normalmente, se utilizarían pruebas funcionales y de integración para probar la vista.
fuente
En mi opinión, la respuesta es un firme "no". Quizás este fue el principal beneficio que se observó en esta organización específica, pero no lo llamaría el 'objetivo primario'.
Supongo que no sería tan difícil implementar MVC de una manera, eso es infernalmente difícil de probar en la unidad (diablos, la forma en que lo hice por primera vez era difícil de probar).
Por otro lado, se podría decir que prácticamente cualquier patrón (excluyendo cosas como Singleton) facilita las pruebas unitarias, ya que a menudo promueven el desacoplamiento, pero ¿es su 'objetivo principal'? Apenas.
fuente
MVC (al igual que la mayoría de los patrones de diseño conocidos) existía mucho antes de que se conocieran las pruebas unitarias. El libro GoF se publicó en 1994, y solo documentaban los patrones que han estado en uso durante años (si no décadas) antes. (Y no se menciona la prueba de la unidad en él.) Acerca de la prueba de la unidad, no puedo encontrar una hora exacta sobre cuándo se hizo "pública". Lo leí personalmente en artículos relacionados con Extreme Programming y el primer libro de XP. salió en 1999.
Obviamente, las pruebas unitarias no podrían ser el objetivo principal de inventar / documentar patrones, mientras que es justo decir que los patrones, cuando se aplican bien, facilitan enormemente las pruebas unitarias.
fuente
Creo que no, la facilidad de las pruebas unitarias es uno de los beneficios, pero es parte de una colección de beneficios cuando se usa MVC junto con las razones que enumera. Decir que hay una sola razón principal para usar MVC es un error. Parece que la compañía en cuestión elige MVC para facilitar las pruebas unitarias, por lo tanto, creen que es la razón principal. Personalmente, mis razones para usar MVC son su simplicidad en comparación con los formularios web, lo que facilita su diseño y mantenimiento, pero cada individuo / empresa tendrá sus propias razones para usar cualquier tecnología.
fuente
En el mundo MVC de ASP.NET, se han incluido muchas mejoras en ASP.NET en el propio marco. El objetivo principal de este patrón de diseño es aislar la lógica empresarial de la interfaz de usuario para centrarse en una mejor capacidad de mantenimiento, una mejor capacidad de prueba y una estructura más limpia para la aplicación.
ASP.NET MVC tiene ciertas capacidades que lo convierten en la mejor opción para elegir si necesita uno o más de los siguientes:
• Un alto nivel de control sobre el HTML generado : a diferencia de los formularios web, las vistas en ASP.NET MVC procesan HTML exactamente como usted les indica. Recientemente, los formularios web se han mejorado en esta área, pero todavía no tienen el nivel de control que tiene MVC.
• Pruebas unitarias más sencillas : con ASP.NET MVC, es muy fácil seguir patrones de prueba como el desarrollo basado en pruebas (TDD). Debido al complejo ciclo de vida de eventos en Web Forms, además de un marco basado en control, TDD es mucho más fácil con MVC.
• Separación de preocupaciones : Esto se refiere a tener todos los aspectos del sistema claramente separados uno del otro. Debido al patrón que implementa, una aplicación MVC se divide en partes discretas y unidas libremente (modelo, vistas y controladores), lo que facilita su mantenimiento.
Algunos de los otros beneficios son:
• El patrón MVC en sí mismo facilita la gestión de la complejidad al separar claramente la funcionalidad de la aplicación en tres partes principales, el modelo, la vista y el controlador.
• Las aplicaciones web ASP.NET MVC no utilizan el estado de vista ni los formularios basados en el servidor. Esto hace que el marco MVC sea ideal para desarrolladores que desean un control total sobre el comportamiento de una aplicación. El estado de visualización puede ser muy grande, lo cual es un problema para dispositivos como teléfonos inteligentes que se ejecutan en redes lentas (la transmisión de toda esa información puede ser muy lenta). En una página de formularios web, solo puede tener uno por página. Esta es una restricción bastante importante. En MVC, no existe tal restricción, es decir, puede tener tantos elementos como desee.
• ASP.NET MVC proporciona un mejor soporte para el desarrollo basado en pruebas (TDD).
• ASP.NET MVC funciona bien para aplicaciones web compatibles con grandes equipos de desarrolladores y para diseñadores web que necesitan un alto grado de control sobre el HTML. Proceso de solicitud de ASP.NET MVC
fuente