Llamo a un servicio web de terceros ahora como parte de mi aplicación. Estoy usando la gema RestClient para hacer esto. Hay muchas herramientas disponibles para hacer lo mismo, así que eso no debería importar.Ruby on Rails: la mejor manera de probar una llamada fallida a una API de terceros
Lo que me interesa es tener pruebas suficientemente buenas, nada demasiado sofisticadas, donde puedo simular cómo responde mi aplicación cuando el servicio web de terceros no está disponible por el motivo que sea. Ya sea que superé un límite de velocidad o un tiempo de espera debido a la latencia/complicaciones de la red, solo quiero tomar algo como un código de estado HTTP y probar qué hace mi aplicación en ese caso.
¿Cuál es la mejor manera de hacer esto con Test :: Unit? En este momento, la llamada al servicio de terceros está encapsulada dentro de uno de mis controladores. Tengo un módulo simple con algunos métodos de envoltura para los diferentes puntos finales del servicio remoto. Solo quiero asegurarme de que mi aplicación haga lo correcto cuando el servicio esté o no disponible.
¿Está utilizando un marco adicional junto a Test :: Unit que puede 'colgarse' de la manera correcta para hacer esto? Obviamente, no puedo forzar el tiempo de espera de una red y comenzar a hackear cosas como IPtables solo para las pruebas no vale la pena el tiempo. Estoy seguro de que este problema se ha resuelto un millón de veces, ya que la integración de cosas como Facebook y Twitter en las aplicaciones web es tan popular en estos días. ¿Cómo se prueba la falla al llegar a esas API en un formato robusto/controlado?