Rspec: how to spec request.env in a helper spec?
Solution 1
If you're using rspec-rails, you might be able to use controller.request
in your helper tests.
Solution 2
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
Solution 3
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
Solution 4
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.
Solution 5
Try this:
stub(request).env { {"HTTP_USER_AGENT" => "Some String"} }
Related videos on Youtube
RoundOutTooSoon
A weekday coder and a weekend flyer. Trying to improve both of my coding and flying skills.
Updated on June 05, 2022Comments
-
RoundOutTooSoon almost 2 years
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:
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
When I run the spec I have this error:
undefined local variable or method `request' for <ObjectWithDocHelperMixedIn:0x00000103b5a7d0>
How do I stub for request.env['...'] in my specs?
Thanks.
-
apneadiving about 12 yearsI do this in controller specs though... never tried in helper specs.
-
RoundOutTooSoon about 12 yearsthanks for your reply. Yeah I tried that before too but it didn't work in helper specs (at least in my case).
-
apneadiving about 12 yearsone easy workaround would be to extract condition to methods in your helper and stub those methods