如何在rspec测试中设置HTTP_USER_AGENT

use*_*132 13 rspec ruby-on-rails

可能重复:
是否可以在rails集成测试或规范中指定用户代理?

我正在使用rspec在我的rails应用程序中测试请求.我需要能够在请求之前设置用户代理.

这不起作用:

  describe "GET /articles feed for feedburner" do
it "displays article feed if useragent is feedburner" do
  # Run the generator again with the --webrat flag if you want to use webrat methods/matchers
  @articles=[]
  5.times do
    @articles << Factory(:article, :status=>1, :created_at=>3.days.ago)
  end
  request.env['HTTP_USER_AGENT'] = 'feedburner'
  get "/news.xml" 
  response.should be_success
  response.content_type.should eq("application/xml")
  response.should include("item[title='#{@articles.first.title}']")
end
Run Code Online (Sandbox Code Playgroud)

结束

如何正确指定用户代理?

Dev*_*n M 11

在测试中尝试使用它:

request.stub!(:user_agent).and_return('FeedBurner/1.0')
Run Code Online (Sandbox Code Playgroud)

或者对于较新的RSpec:

allow(request).to receive(:user_agent).and_return("FeedBurner/1.0")
Run Code Online (Sandbox Code Playgroud)

替换FeedBurner/1.0为您要使用的用户代理.我不知道这个确切的代码是否有效,但它应该是这样的.