[rspec-users] NameError when passing a URL helper to a method

Nick Hoffman nick at deadorange.com
Thu Dec 4 17:43:34 EST 2008


On 2008-12-04, at 17:06, Zach Dennis wrote:
> On Thu, Dec 4, 2008 at 3:41 PM, Nick Hoffman <nick at deadorange.com>  
> wrote:
>> Hi guys. I just wrote a small spec helper method to DRY up some of  
>> my specs,
>> and found that passing a URL helper (Eg: #photos_url) to a method  
>> results in
>> a NameError error. I extracted the problem into its own short spec  
>> file to
>> isolate it. Any thoughts on what's going on?:
>> http://gist.github.com/32060
>
> foo(properties_url) is being executed in the context of the describe
> block and not in the instance of an example being run. For example:
>
> describe FooController do
>   it "has access to routing methods here" do
>      properties_url
>   end
>
>   # it doesn't have access out here though, this fails
>   properties_url
>
>   # your example will fail to
>  foo(properties_url)
> end
> -- 
> Zach Dennis

Hi Zach. Thanks for that explanation; it makes a lot of sense. What  
I'm trying to do is write a spec helper method for DRYing up  
controller redirect examples. In other words, rather than having the  
following 4 lines repeated throughout my specs:
   it 'should redirect to the account page' do
     do_action
     response.should redirect_to account_url
   end

I'd like to do this:
   it_should_redirect_to 'the account page', account_url

I've written the method. The only problem is what you explained;  
#account_url being called from outside of an example.

The only solution that I can think of is to do this:
   before :each do
     @account_url = account_url
   end
   it_should_redirect_to 'the account page', @account_url

Are there any alternative solutions? Cheers,
Nick


More information about the rspec-users mailing list