问题:在 Cucumber / Capybara / Selenium 中存根 Ajax 请求?

在我的 Rails 3.2 项目中,我偶尔会从 Javascript 向http://jsonip.com发送一个 http 请求。但是当使用@javascript标签运行 Cucumber 时,请求会非常频繁地发送。这显然是非常不可取的,我想存根这样的请求。现在,我想我可以使用webmock中的stub_request来实现这一点,如下所示:

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

但即使有了这个,jsonip也会从 Javascript 中调用。所以我发现webmock实际上并没有存根 Ajax 请求(至少不是上面的stub_request语句)。

在 Cucumber / Capybara / Selenium 设置中存根 Ajax 请求的正确方法是什么?

解答

唯一的方法是根据运行的环境更改 url 或禁用请求。

你不能从测试端存根这个请求,因为这个请求是由_browser_而不是你的应用程序发出的。

此外,作为 CI 服务器的临时解决方案或解决方案,您可以在 hosts 文件中禁用此 url。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐