我正在使用
turbolinks-ios和Rails变体开发iOS应用程序.
在我的iOS应用程序中,我设置自定义用户代理iPadApp并检测Rails应用程序控制器上是否正在使用request.user_agent.try(:index,’iPadApp’)将变体设置为平板电脑(因为视图类似于foo.html tablet.haml ).
我的应用程序工作正常,现在我正在尝试为我的应用程序编写功能测试,但无法正确设置用户代理.我试过this帖子,实际上是stackoverflow,但我看到它没有设置request.user_agent(page.driver.browser.header(key,value))在request.params中设置查询参数.
在我的控制器测试中,我只需使用request.user_agent =’iPadApp’来设置工作正常的用户代理.
如何配置测试请求以便我可以使用request.user_agent.try(:index,’iPadApp’)?
谢谢你的帮助.
解决方法
由于您没有指定驱动程序,因此Capybara应该使用rack_test.使用rack_test驱动程序,您可以在调用visit之前在测试代码中设置用户代理标头
page.driver.header('User-Agent','the user agent string you want')
然后,应该在您的应用程序代码中访问request.user_agent.
Capybara.register_driver(:ipad_rack_test) do |app| Capybara::RackTest::Driver.new(app,:headers => { 'HTTP_USER_AGENT' => 'User agent string' }) end
然后将您的驱动程序指定为:ipad_rack_test