Me estoy conectando a un servicio externo simple, aunque idiosincrático.¿Cómo pueden los servicios externos de burla mejorar las pruebas unitarias?
Creo que las pruebas de mi unidad no deben depender de la disponibilidad o implementación de ese servicio externo, por lo que pretendo simularlo.
Necesito el simulacro para aceptar y devolver mensajes y respuestas realistas; de lo contrario, mis pruebas no representarán situaciones reales. Por ejemplo, tiene que arrojar el tipo correcto de errores, y hay al menos 7 formas diferentes en que puede fallar (entre usted y yo no es un servicio externo muy bien diseñado). Por lo tanto, como mínimo, tengo que tener un hash de pares mensaje/respuesta.
De modo que, en lugar de reducir la contingencia, la burla la ha reintroducido en otro lugar. De hecho, como dice el refrán, ahora tengo dos problemas: tengo que estar seguro de que lo que está en mi hash es una representación justa de cómo se comporta el servicio externo. Pero seguramente la fuente canónica de qué objeto de respuesta X da al mensaje m es X sí mismo. Cualquier otra cosa es arriesgada y desordenada.
¿He tomado un giro equivocado? ¿Cómo puedo eliminar esta aparente circularidad?
EDIT He aclarado cuál es el problema a la luz de los útiles comentarios de Justice.
Ah sí, eso es todo, gracias.¡El riesgo y el mantenimiento no desaparecen, simplemente por el hecho de que es un servicio externo! Pero al expresar mis expectativas sobre su comportamiento, aíslo la incertidumbre. –
El enlace a "mis dos respuestas en otra pregunta" está roto. ¿Alguien puede encontrar dónde vive ahora? –
Esto debería funcionar. http://stackoverflow.com/questions/513778/what-do-you-think-of-junit-style-unit-testing-do-you-favor-behaviour-driven-tes/513807#513807 –