为了测试,我不希望浏览器与任何外部服务通信。如果将所有外部请求发送到localhost而不是外部服务,我可以模拟它们。
Capybara有没有办法启动浏览器,以便代理对localhost的所有请求?
答案 0 :(得分:1)
不是直接的,但您可以尝试puffing-billy。它设置了一个代理来捕获浏览器请求并允许您存根它们:
proxy.stub('http://example.com/json/').and_return(:json => { :foo => 'bar' })
答案 1 :(得分:0)
浏览器不喜欢来自安全请求的响应,但不是这样。
在spec目录中创建一个firefox_profile目录。
使用以下命令在firefox_profile中创建times.json
文件:
{
"created": 1441059879941
}
然后更新spec_helper
:
Capybara.register_driver :selenium do |app|
profile = Selenium::WebDriver::Firefox::Profile.new('spec/firefox_profile')
profile["network.proxy.type"] = 1
profile["network.proxy.http"] = 'localhost'
profile["network.proxy.http_port"] = 3000
profile["network.proxy.ssl"] = "proxy.domain.example.com"
profile["network.proxy.ssl_port"] = 3000
Capybara::Selenium::Driver.new(app, browser: :firefox, profile: profile)
end