ruby-on-rails – 在rails测试上设置自定义用户代理

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在rails测试上设置自定义用户代理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 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.

另一种解决方案是为您的ipad测试注册特定的驱动程序

Capybara.register_driver(:ipad_rack_test) do |app|
  Capybara::RackTest::Driver.new(app,:headers => { 'HTTP_USER_AGENT' => 'User agent string' })
end

然后将您的驱动程序指定为:ipad_rack_test

猜你在找的Ruby相关文章