I’m trying to test some of my helpers. I have one helper (in module
LocationsHelper) that calls a helper/method in ApplicationHelper. If I
include ApplicationHelper and LocationHelper in my spec, and then I call
the
helper using the “helper.” scope:
helper.location_tree(‘Portland’)
then it complains that it can’t find the other helper it uses from
ApplicationHelper. If instead, I call it directly:
location_tree(‘Portland’)
Then, it can’t find the Rails’ generated URL helpers (e.g.
“location_path”
or “location_url”). How do I make it so that all the dependencies or
Rails’
included stuff is found?
If I don’t include them, then the helpers in LocationsHelper can’t
find/use
the helpers in ApplicationHelper. Maybe this will help illustrate:
test code:
describe LocationsHelper do
describe “location tree” do
it “should not show siblings for state, country, or root level
locations” do
helper.location_tree(@oregon).should_not
include_text(@hawaii.name)
end
end
end
The location_tree method is defined in the module/helper
LocationsHelper.
But, it calls ApplicationHelper.markaby. When I run the above test, it
can’t find the markaby method/helper. It will only find markaby if I
remove
the leading “helper.” from in front of the call, and also include
ApplicationHelper (including this, when using helper. doesn’t remedy
it).
On Mon, Sep 15, 2008 at 4:06 PM, Christopher B. [email protected] wrote:
end
The location_tree method is defined in the module/helper LocationsHelper.
But, it calls ApplicationHelper.markaby. When I run the above test, it
can’t find the markaby method/helper. It will only find markaby if I remove
the leading “helper.” from in front of the call, and also include
ApplicationHelper (including this, when using helper. doesn’t remedy it).
OK - in the short run, I’d do this as a workaround instead:
helper.extend ApplicationHelper
You can do that in a before block or in the examples directly.
This is a better option because you’ll soon not have direct access to
the helper methods in the examples except through the helper object.
Next question is whether rspec-rails should just include the
ApplicationHelper module into the helper object. My instinct is yes.
WDYT?