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?