2012-03-28 79 views
1

我的rails应用程序会与几个不同的API进行交流,我想编写测试以确保在请求出现问题时正确处理错误。例如,如果服务关闭并且无法访问。如何测试API错误?

有没有一种方法可以模拟从服务返回的错误,即使它在测试过程中可能没有问题?

回答

1

webmock宝石可以帮助你。针对您的特定问题,请滚动至“使用自定义状态消息进行回复”。

stub_request(:any, "www.example.com").to_return(:status => [500, "Internal Server Error"]) 

req = Net::HTTP::Get.new("/") 
Net::HTTP.start("www.example.com") { |http| http.request(req) }.message # ===> "Internal Server Error" 

我已经在Rspec和Test :: Unit中使用了这个gem。最大的缺点是,决定什么请求适用于特定模拟的匹配逻辑并不总是如你所期望的那样工作。这是一个小小的抱怨,但。这个宝石是一个网络正面的,比试图从测试案例中获得现场服务好得多。

0

您可以使用模拟而不是真实的服务,并使其返回一个错误。