szimek
2009-May-19 21:13 UTC
[rspec-users] Problem with testing Rails action that uses return keyword
Hi, I''m trying to test Rails action that looks like this: def create unless facebook_session authentication_failed and return end ... @facebook_user = facebook_session.user ... end authentication_failed method redirects to ''/''. The test looks like this: it ''should call authentication_failed'' do controller.should_receive(:authentication_failed) get :create end The problem is that in the test, despite the fact that facebook_session is nil and the authentication_failed method is called, the action does not return and I got error in facebook_session.user line, because facebook_session is nil. If I move the return keyword to the next line, the test complains then about missing create.erb template. Any ideas how to solve it?
David Chelimsky
2009-May-27 08:23 UTC
[rspec-users] Problem with testing Rails action that uses return keyword
On Tue, May 19, 2009 at 5:13 PM, szimek <szimek at gmail.com> wrote:> Hi, > > I''m trying to test Rails action that looks like this: > > def create > ?unless facebook_session > ? ?authentication_failed and return > ?end > ?... > ?@facebook_user = facebook_session.user > ?... > end > > authentication_failed method redirects to ''/''. > > The test looks like this: > > it ''should call authentication_failed'' do > ?controller.should_receive(:authentication_failed) > ?get :createIf you''re using facebooker, you should use facebook_get instead of get: facebook_get :create Also - shouldn''t this be a post?> end > > The problem is that in the test, despite the fact that > facebook_session is nil and the authentication_failed method is > called, the action does not return and I got error in > facebook_session.user line, because facebook_session is nil. > > If I move the return keyword to the next line, the test complains then > about missing create.erb template. > > Any ideas how to solve it?