Я пытаюсь протестировать свой контроллер с помощью rspec и всегда получаю сообщение об ошибке.
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
_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
Итак, я получаю сообщение об ошибке:
Сбой / Ошибка: введите 'update',: id => @ user.id,: user => {: username => username + "abc"},: format =>: json ActionView :: Template :: Error: У вас есть nil, когда вы этого не ожидали! Вы могли ожидать экземпляр Array. Ошибка при оценке nil. [] # C: /Users/makaroni4/free_frog/ffapi/app/views/users/_show.tokamak: 1: 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 уровни) в '
Так может я неправильно назвал метод render_to_string?