簡體   English   中英

Rspec 渲染時測試失敗

[英]Rspec test fails while rendering

對於我的用戶 controller,在運行測試用例時我遇到了渲染問題。 它重定向到http://test.host/sign_in而不是呈現新的。

  1. Controller代碼
         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
  1. 規范/users_controller_spec.rb
         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

在運行這個測試用例時,我遇到了這個錯誤!

  1. 錯誤
        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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM