[英]Rspec test fails while rendering
對於我的用戶 controller,在運行測試用例時我遇到了渲染問題。 它重定向到http://test.host/sign_in而不是呈現新的。
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
UserMailer.registration_confirmation(@user).deliver_now
session[:user_id] = @user.id
format.html { redirect_to sign_in_path, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
describe '#create' do
it 'User created' do
new_user = FactoryBot.build :user
post :create, params: {
user: {
id: new_user.id,
firstname: new_user.firstname,
email: new_user.email,
password: "s",
password_confirmation:"s"
}
}
expect(response).to render_template("new")
end
end
在運行這個測試用例時,我遇到了這個錯誤!
Failures:
1) UsersController controller test cases #create User created
Failure/Error: expect(response).to render_template("new")
expecting <"new"> but was a redirect to <http://test.host/sign_in>
# ./spec/controllers/users_controller_spec.rb:30:in `block (4 levels) in <top (required)>'
我該如何解決這個問題?
根據您的 controller 代碼,您在保存成功時重定向到 sign_in:
format.html { redirect_to sign_in_path, notice: 'User was successfully created.' }
你失敗的測試是說:
expecting <"new"> but was a redirect to <http://test.host/sign_in>
它來自expect(response).to render_template("new")
。 您可能希望將此行更改為expect(subject).to redirect_to(sign_in_path)
。
當@user.save
為 false 時,行為render_template("new")
可能相關
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.