浏览器 gem 使用水豚进行测试
Browser gem testing with capybara
我正在使用 gem Browser
检测移动设备并将它们重定向到 rails 应用程序的不同着陆点。我使用的代码是这个:
Rails.configuration.middleware.use Browser::Middleware do
redirect_to mobile_landing_path if browser.device.mobile? || browser.device.ipad? || browser.device.tablet?
end
现在我需要使用 Rspec 和水豚进行功能测试,我在这里有点迷路。非常感谢您的帮助。
我现在进行的测试正在使用 capybara user agent 并且看起来像这样:但它似乎仍然获得了基地着陆而不是移动着陆
feature 'Visiting the site from an' do
context 'Android device' do
background do
set_user_agent(:android)
end
scenario 'I should be redirected to mobile landing' do
visit root_path
expect(page).to have_current_path(mobile_landing_path)
end
end
end
当 HTTP_ACCEPT header 设置并匹配 %r[(text/html|[=20 时,浏览器 gem 中间件只会是 运行 =]/)]。默认情况下,rack-test driver 不设置任何 header。您可以覆盖提供的 driver 注册,例如
Capybara.register_driver :rack_test do |app|
Capybara::RackTest::Driver.new(app, :headers => { 'HTTP_ACCEPT' => 'text/html' })
end
或者您可以创建一个新的 driver 注册
Capybara.register_driver :rack_test_with_html_accept do |app|
Capybara::RackTest::Driver.new(app, :headers => { 'HTTP_ACCEPT' => 'text/html' })
end
然后将 driver: :rack_test_with_html_accept
元数据添加到需要设置 header 的测试中
feature 'Visiting the site from an', driver: :rack_test_with_html_accept do
...
end
我正在使用 gem Browser 检测移动设备并将它们重定向到 rails 应用程序的不同着陆点。我使用的代码是这个:
Rails.configuration.middleware.use Browser::Middleware do
redirect_to mobile_landing_path if browser.device.mobile? || browser.device.ipad? || browser.device.tablet?
end
现在我需要使用 Rspec 和水豚进行功能测试,我在这里有点迷路。非常感谢您的帮助。
我现在进行的测试正在使用 capybara user agent 并且看起来像这样:但它似乎仍然获得了基地着陆而不是移动着陆
feature 'Visiting the site from an' do
context 'Android device' do
background do
set_user_agent(:android)
end
scenario 'I should be redirected to mobile landing' do
visit root_path
expect(page).to have_current_path(mobile_landing_path)
end
end
end
当 HTTP_ACCEPT header 设置并匹配 %r[(text/html|[=20 时,浏览器 gem 中间件只会是 运行 =]/)]。默认情况下,rack-test driver 不设置任何 header。您可以覆盖提供的 driver 注册,例如
Capybara.register_driver :rack_test do |app|
Capybara::RackTest::Driver.new(app, :headers => { 'HTTP_ACCEPT' => 'text/html' })
end
或者您可以创建一个新的 driver 注册
Capybara.register_driver :rack_test_with_html_accept do |app|
Capybara::RackTest::Driver.new(app, :headers => { 'HTTP_ACCEPT' => 'text/html' })
end
然后将 driver: :rack_test_with_html_accept
元数据添加到需要设置 header 的测试中
feature 'Visiting the site from an', driver: :rack_test_with_html_accept do
...
end