Una pregunta formulada muchas veces antes pero con un desarrollo específico de twds mvc inclinado.
He sido un niño muy bueno y he codificado todas las acciones de mi controlador con las pruebas unitarias correspondientes, lo cual ha sido excelente (aunque un poco [leer MUCHO] repetitivo a veces). Para ser honesto, en realidad he creado una pequeña plantilla T4 para escribir la mayoría de los huesos básicos de las pruebas de la unidad inicial y luego ajustar según sea apropiado según el uso. Admitiré que no estoy muy seguro de cómo manejar las pruebas en vistas que contienen vistas parciales, pero esa es una historia para otra pregunta.
Ahora, la parte difícil para mí para decidir es cuán profunda debe ser la cobertura en mi capa de servicio. La razón es que algunos de mis métodos de servicio (para bien o para mal) realmente realizan una variedad de consultas linq que luego proporcionan información discreta a la lógica posterior dentro del método. Sé que podría (debería ??) desglosar estos métodos para llamar solo a la lógica requerida para cada instrucción linq y luego aplicarlos dentro del método. Sin embargo, en muchos casos, nunca hay una reutilización de las 'funciones' de linq y, por lo tanto, se siente que esto refactorizaría el código demasiado lejos.
Lo que estoy preguntando es que, con la lógica compleja que ocurre dentro de un método, es 'lo suficientemente bueno' tener un método de prueba que simplemente afirme el resultado requerido y / o el error esperado, o si todas las líneas lógicas se simulan y prueban también. tal como lo veo, para hacer las pruebas correctamente, entonces la lógica del método (línea por línea) también debería estar recibiendo algún tipo de cobertura. Sin embargo, eso (en mi opinión ingenua) podría conducir a un ciclo interminable de tratar de mantener la prueba y el método implementado tan estrechamente alineados (que sé que deberían estar) como para crear una industria artesanal en las pruebas mismas.
Sé que mi pregunta puede ofender a algunos de los devotos de TDD que verán esto como una obviedad. No estar en el campo de TDD, este es un "sí obvio" para mí, de ahí la pregunta.
por cierto, había comprobado esto para obtener ideas:
mirando hacia adelante a los votos a favor constantes ahora :)
[editar] - para el beneficio del votante "cercano" soltero (¡bueno en este momento soltero!). Esta pregunta no es subjetiva. Estoy buscando un consenso sobre un tema muy enfocado. No estoy tratando de despertar pasiones negativas, no estoy buscando exponer fallas en la tecnología, soy un ENORME fanático. Entonces, por favor, deje un comentario cortés para mi beneficio si vota para cerrar, ya que puede ayudarme a reestructurar la pregunta si hay ambigüedad o información errónea. esta pregunta podría beneficiar a una gran parte de la población de mvc.
¡¡gracias!!
jim