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.
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