ruby rspec webmock

ruby - WebMock simula la API que falla(sin Internet, timeout++)



vcr rspec (1)

Después de excavar, encontré algunas soluciones para esto.

Aparentemente puede cambiar to_return(...) to to_timeout , lo que producirá un error de tiempo de espera. También puede tener to_raise(StandardError) . Para obtener una referencia completa, consulte https://github.com/bblimke/webmock#raising-timeout-errors .

Tiempo de espera, o servidor no encontrado , ejemplo:

stubbed_request = stub_request(:get, "#{host}/api/something.json"). with(:headers => {''Accept''=>''*/*'', ''Content-Type''=>''application/json'', ''User-Agent''=>''Ruby''}). to_timeout

Levante StandardError, o sin Internet / otra excepción, ejemplo:

stubbed_request = stub_request(:get, "#{host}/api/something.json"). with(:headers => {''Accept''=>''*/*'', ''Content-Type''=>''application/json'', ''User-Agent''=>''Ruby''}). to_raise(StandardError) #Error example 2: stubbed_request = stub_request(:get, "#{host}/api/something.json"). with(:headers => {''Accept''=>''*/*'', ''Content-Type''=>''application/json'', ''User-Agent''=>''Ruby''}). to_raise("My special error")

Ahí vas, no demasiado duro después de todo.

No tengo idea de cómo no lo encontré la primera vez. De todos modos, espero que esto ayude a alguien algún día.

Intento simular el comportamiento inesperado de una API web, como no encontrar el servidor y los tiempos de espera, usando webmock.

Cuál sería la mejor forma de hacer esto? Todo lo que puedo pensar es hacer algo como esto:

stubbed_request = stub_request(:get, "#{host}/api/something.json"). with(:headers => {''Accept''=>''*/*'', ''Content-Type''=>''application/json'', ''User-Agent''=>''Ruby''}). to_return(:status => [500, "Internal Server Error"])

Eso debería funcionar para cosas como 404, etc., pero ¿cómo puedo probar los tiempos de espera , servidor no encontrado / fuera de línea y sin conexión a Internet ?