2012-03-28 101 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

您可以使用模擬而不是真實的服務,並使其返回一個錯誤。