He estado haciendo TDD durante un año, me siento bastante bien al respecto, me encantan mis suites de prueba y todo. Sin embargo, he notado que últimamente he estado haciendo muchas verificaciones de llamadas simuladas. Por ejemplo, tendría un Servicio en el que se inyectaría un Repositorio; en mi prueba unitaria, pasaría un simulacro del Repositorio y verificaría que fue invocado dentro del método que estoy probando. Luego verificaría si los resultados devueltos son correctos (en otra prueba). Esto definitivamente "se siente" mal, ya que las pruebas de mi unidad ahora están muy acopladas a los detalles de implementación. Escuché que deberías probar el "comportamiento", sin embargo, en muchas situaciones eso es ... emm, ¿no es posible? Si tienes unvoid
método, por ejemplo, generalmente prueba los efectos secundarios. Quiero decir que es fácil seguir adelante y mostrar algunos códigos kata simples donde esto se puede demostrar, pero en mi humilde opinión, no se refleja muy bien en los programas del mundo real que escribimos. ¿Lo que estoy haciendo está mal? ¿Es este tipo de prueba una especie de antipatrón? Agradecería su opinión sobre esto, todavía soy un poco novato cuando se trata de TDD.