Ответ 1
Вы завершаете переменную @user
в тесте, но контроллер будет создавать экземпляр нового экземпляра, чтобы заглушка не была на месте.
Не рекомендуется использовать заглушку в этом случае, чтобы эмулировать успешный вызов сохранения. Почему вместо этого вы не отправляете действительные данные и убедитесь, что действие выполнено успешно?
Следующий код предназначен для RSpec > 2.1, и он использует синтаксис expect
.
before(:each) do
@params = valid_attributes
end
it "should create new user" do
@_before = User.count
post :create, :user => @params
expect(assigns(:user)).to_not be_new_record
expect(User.count).to eq(@_before + 1)
end
it "should render the success page on successful signup" do
post :create, :user => @params
expect(response).to be_successful
expect(response).to render_template("success")
end
Наконец, измените
render :template => "success"
к
render :action => "success"
Для предыдущих версий RSpec или если вы используете синтаксис should
, используйте
before(:each) do
@params = valid_attributes
end
it "should create new user" do
@_before = User.count
post :create, :user => @params
assigns(:user).should_not be_new_record
User.count.should == (@_before + 1)
end
it "should render the success page on successful signup" do
post :create, :user => @params
response.should be_successful
response.should render_template("success")
end