22

私のヘルパーモジュールには、次のものがあります。

def abc(url)
  ...
  if request.env['HTTP_USER_AGENT']
    do something
  end
end

私のスペックファイルには、次のものがあります。

  describe "#abc" do      
before(:each) do
  @meth = :abc

  helper.request.env['HTTP_USER_AGENT'] = "..."
end
it "should return the webstart jnlp file" do
  @obj.send(@meth, "some_url").should ....
end
end

スペックを実行すると、次のエラーが発生します。

undefined local variable or method `request' for <ObjectWithDocHelperMixedIn:0x00000103b5a7d0>

スペックでrequest.env['...']をスタブするにはどうすればよいですか?

ありがとう。

4

5 に答える 5

17

rspec-railsを使用controller.requestしている場合は、ヘルパー テストで使用できる可能性があります。

于 2013-03-31T21:19:32.327 に答える
5

次のようにして、リクエスト env で設定されたユーザー エージェントをオーバーライドできます。

before(:each) do
  @meth = :abc
  helper.request.user_agent = 'something else'
end

次に、仕様で:

it "does stuff" do
  expect(helper.send(@meth, "some_url")).to # ...
end
于 2013-04-06T02:20:07.983 に答える
1

これを試して:

stub(request).env { {"HTTP_USER_AGENT" => "Some String"} }

于 2012-04-12T22:18:33.787 に答える