【发布时间】:2016-05-06 02:43:05
【问题描述】:
我正在使用 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 进行功能测试,在这里我有点迷失了。非常感谢您的帮助。
我现在的测试是使用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
【问题讨论】:
-
你到底想测试什么,你尝试了什么,你遇到了什么错误? (你的逻辑也似乎倒退了——如果浏览器是移动的,我认为你想重定向到 mobile_landing_path?)
-
我已经更正了逻辑并添加了我想要解决的测试
-
您确定浏览器和 Capybara-user_agent 将“Android”明确定义为移动设备吗?您是否尝试过专门将测试设置为其他移动代理(如 iOS)并测试是否有效?
-
同样的结果,但是谢谢
-
您对 set_user_agent 的定义是什么?也不要将 eq 与 current_path 一起使用,当您使用启用 JS 的驱动程序时,它会让您头疼,而是习惯使用 have_current_path 匹配器 -
expect(page).to have_current_path(mobile_landing_path)
标签: ruby-on-rails ruby capybara