2016-11-04 86 views
0

我正在爲一個調用多個http請求到外部服務的方法編寫單元測試。有沒有辦法爲RSpec HTTP存根使用級聯規則?

它首先通過調用索引的路線,說「http://api.com/things

然後它通過索引中的各元素,並調用「顯示路線」,說這是「http://api.com/things/123

你看, 「顯示」路線末尾的/123唯一的區別。

現在我有一個存根索引路線。

WebMock::API.stub_request(
     :get, 
     /.*api\.com\/things.*/ 
    ).to_return(<something>) 

問題是,這會攔截對「show」路由的調用。

我想爲「show」路線做一個不同的模擬。我想不必深入正則表達式來做到這一點。

有沒有一種方法可以像在Sinatra或Rails中路由工作那樣設置http mock - 換句話說,如果文件中有較高的匹配,那麼較低的匹配不會被擊中?

回答

0

正則表達式並不複雜,並且是互斥的,所以應該可以正常工作。

對於指數

WebMock::API.stub_request(
     :get, 
     /.*api\.com\/things$/ 
    ).to_return(<something>) 

的演出

WebMock::API.stub_request(
     :get, 
     /.*api\.com\/things\/\d/ 
    ).to_return(<something>) 
+0

鑑於我的問題的信息你的答案是正確的。我想這是我的錯,因爲沒有顯示我的實際應用程序代碼,但我不得不改變這一點,使其工作。 'to_return'可以佔用一個塊(它通過url),所以在那裏,我做了一些像'if url.include?(「123」) else '。 –

+0

嗯,是的,你的請求是針對'show'與'index'的不同模擬,但這很酷,只要你有解決方案。 – SteveTurczyn

相關問題