2012-03-15 178 views
7

在我的Rails 3.2項目中,我發送一個偶爾的http請求到來自Javascript的http://jsonip.com。但是當運行帶有@javascript標籤的Cucumber時,請求會非常頻繁地發送。這顯然是非常不可取的,我想存根這些請求。現在,我想我可以用stub_requestwebmock對於這一點,就像這樣:黃瓜/水豚/硒中的Ajax請求?

Before do 
    stub_request(:any, /.*jsonip.*/).to_return(:body => '{"ip":"24.104.73.2","about":"/about"}') 
end 

但即使有這樣的地方,jsonip被從Javascript調用。因此,我發現webmock實際上並不存在Ajax請求(至少與上面的stub_request聲明不同)。

什麼是在黃瓜/水豚/硒設置存根Ajax請求的正確方法?

回答

3

要做到這一點的唯一方法是根據應用程序運行的環境更改url或禁用請求。

由於此請求是由瀏覽器不能由您的應用程序發出,所以您無法從測試端存根請求。

此外,作爲CI服務器的臨時解決方案或解決方案,您可以在hosts文件中禁用此URL。

+0

嗯,是的......我怕的就是這個。我現在通過簡單地生成一個Javascript變量,在Rails環境爲開發時持有0,在測試時爲1,在生產時爲2。然後,當變量等於1時,我會阻止對外部服務的Ajax調用。不是最漂亮的解決方案,但它可以工作。謝謝,Iafonov。 – 2012-03-16 14:34:39