[rspec-users] Can't get running a simple rspec test: assigns is always nil

Stephen Eley sfeley at gmail.com
Wed Oct 21 13:59:09 EDT 2009


On Wed, Oct 21, 2009 at 1:07 PM, Alexander Seidl <lists at ruby-forum.com> wrote:
>
> But why does this filter prevents the index action from being executed?

Because returning 'false' from a filter does exactly that: it prevents
the execution of the controller action.

I'll bet I know what you're thinking -- you're thinking, "But I
override @login_user in my example group's before(:each) code!"

Yes, you did.  But you didn't prevent the filter from executing, and
the first line of your logged_in? method sets the value of @login_user
*again*, even if it was already set.  As you have it here, you'll be
doing that database lookup every single time current_user is called or
an action is called in this controller.

I would suggest changing that first line of the filter from
"@login_user = " to "@login_user ||= " -- which sets the value only if
it was previously false or nil.  Not only will this make your testing
code work, but it'll eliminate any lookup redundancy.




-- 
Have Fun,
   Steve Eley (sfeley at gmail.com)
   ESCAPE POD - The Science Fiction Podcast Magazine
   http://www.escapepod.org


More information about the rspec-users mailing list