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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...