How to mock request object for rspec helper tests?
rspec, rspec2, ruby-on-rails, ruby-on-rails-3, view-helpers
Solution
You have to prepend the helper method with 'helper':
describe ApplicationHelper do
it "should prepend subdomain to host" do
helper.root_with_subdomain("test").should = "test.xxxx:xxxx"
end
end
Additionally to test behavior for different request options, you can access the request object throught the controller:
describe ApplicationHelper do
it "should prepend subdomain to host" do
controller.request.host = 'www.domain.com'
helper.root_with_subdomain("test").should = "test.xxxx:xxxx"
end
end
Problem
I've a view helper method which generates a url by looking at request.domain and request.port_string. ``` module ApplicationHelper def root_with_subdomain(subdomain) subdomain += "." unless subdomain.empty? [subdomain, request.domain, request.port_string].join end end ``` I would like to test this method using rspec. ``` describe ApplicationHelper do it "should prepend subdomain to host" do root_with_subdomain("test").should = "test.xxxx:xxxx" end end ``` But when I run this with rspec, I get this: ``` Failure/Error: root_with_subdomain("test").should = "test.xxxx:xxxx" `undefined local variable or method `request' for #<RSpec::Core::ExampleGroup::Nested_3:0x98b668c>` ``` Can anyone please help me figure out what should I do to fix this? How can I mock the 'request' object for this example? Are there any better ways to generate urls where subdomains are used? Thanks in advance.