In my helper module, I have:
def abc(url)
...
if request.env[\'HTTP_USER_AGENT\']
do something
end
end
In my spec file, I have:
If you're using rspec-rails, you might be able to use controller.request
in your helper tests.
for those who use request specs instead of controller specs and want to set request.env
can do it like this:
Rails.application.env_config["whatever"] = "whatever"
this will make request.env["whatever"]
available in your controllers with value you gave it in your specs.
You can override user-agent set in the request env by doing the following.
before(:each) do
@meth = :abc
helper.request.user_agent = 'something else'
end
Then, in your spec:
it "does stuff" do
expect(helper.send(@meth, "some_url")).to # ...
end
Well, you've almost nothing to do:
before(:each) do
@meth = :abc
request.env['HTTP_USER_AGENT'] = "..."
end
I just gave this another try and this passes:
#in helper
def foo
request.env['HTTP_USER_AGENT']
end
#spec
it "foo" do
helper.request.env['HTTP_USER_AGENT'] = 'foo'
expect(helper.foo).to eq 'foo'
end
Try this:
stub(request).env { {"HTTP_USER_AGENT" => "Some String"} }