On Tuesday, May 17, 2011 6:40:26 AM UTC-6, makaroni4
wrote:>
> Hi
> I`m trying to test my controller with rspec and always get an error.
> The error is in the render_to_string method call (without it test
> works fine). So could u please help me with that?
>
Does the controller action run fine outside the context of testing?
>
> users_controller.rb:
>
> def update
> @user.update_attributes!(params[:user])
>
> redirect_to @user, :status => 202, :text =>
> render_to_string(:partial => "users/show", :type =>
"json", :locals =>
> {:user => @user})
> #notice, that redirect_to was reinitialized and :text is a
> parameter for response_body
> end
>
It seems to me the problem may be related specifically to your usage of the
tokamak gem. Haven''t used it myself and don''t know much about
it, but your
error message (below) if you read it claims the error happens on line one of
your tokamak-based template.
> _show.tokamak
> user {
> id user.id
> email user.email
> username user.username
> }
> spec file
> it "should NOT update user username" do
> username = @user.username
> put ''update'', :id => @user.id, :user =>
{:username => username
> +"abc"}, :format => :json
> response.status.should be(202)
> response.headers["Location"].length.should be > 0
> puts response.body
> @user.reload
> @user.username.should eq(username)
> end
> end
> So I get an error:
>
> Failure/Error: put ''update'', :id => @user.id, :user
=> {:username =>
> username+"abc"}, :format => :json ActionView::Template::Error:
You
> have a nil object when you didn''t expect it! You might have
expected
> an instance of Array. The error occurred while evaluating nil.[] # C:/
> Users/makaroni4/free_frog/ffapi/app/views/users/_show.tokamak:1
See how the error is in _show.tokamak:1? If this controller action works
outside testing then perhaps the problem is the setup/integration of tokamak
w/rspec. Or, if it doesn''t even work in a normal web request, then
perhaps
your _show.tokamak just has an error (can''t say since its a DSL I know
nothing about).
> :in
> _app_views_users__show_tokamak___509498818 _32151168_368311673'' #
C:/
> Users/makaroni4/XXX/XXX/app/controllers/users_controller.rb:22:in
> update'' # ./users_controller_spec.rb:34:in `block (4 levels) in
''
>
> So may be I call render_to_string method wrong?
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.