在我的Rails 3.2项目中,我偶尔会从Javascript向http://jsonip.com
发送http请求。但是当使用@javascript
标记运行Cucumber时,请求会非常频繁地发送。这显然是非常不受欢迎的,我想存根这样的请求。现在,我想我可以使用stub_request
webmock
来实现这一点,就像这样:
Before do
stub_request(:any, /.*jsonip.*/).to_return(:body => '{"ip":"24.104.73.2","about":"/about"}')
end
但即使有了这个,{J}也会调用jsonip
。所以我发现webmock
实际上没有存根Ajax请求(至少没有上面的stub_request
语句)。
在Cucumber / Capybara / Selenium设置中存根Ajax请求的正确方法是什么?
答案 0 :(得分:4)
您可以将puffing-billy https://github.com/oesmith/puffing-billy用于此目的。我正在使用它在我的应用程序中模拟对Recurly的JSONP调用。
答案 1 :(得分:3)
执行此操作的唯一方法是根据运行的环境应用程序更改URL或禁用请求。
您无法从测试端存根此请求,因为此请求是由浏览器而非您的应用程序发出的。
此外,作为CI服务器的临时解决方案或解决方案,您可以在hosts文件中禁用此URL。
答案 2 :(得分:3)
Capybara不知道任何通过webmock存根的请求,因为请求来自capybara-webkit或firefox。
这篇思想机器文章将指导您完成它:
http://robots.thoughtbot.com/using-capybara-to-test-javascript-that-makes-http