分配RSPEC错误



我正在尝试使用RSpec关注Mike Hartl的教程。我已经达到了密码重置集成测试,到目前为止,我做得很好。然后我到达了user = assigns(:user)

的线

我搜索了答案,所以这是我的错误和错误。

失败:

passwordresets密码重置电子邮件输入有效电子邮件将密码和重定向重定向到root 失败/错误:期望(agisss(:user((。到eq([user](

 NameError:
   undefined local variable or method `user' for #<RSpec::ExampleGroups::PasswordResets::PasswordResets::EmailInput:0x007fc5d16b0ca8>
 # ./spec/requests/password_resets_spec.rb:26:in `block (4 levels) in <top (required)>'
require 'rails_helper'
RSpec.describe "PasswordResets", type: :request do
 describe "Password resets" do
   before do
     ActionMailer::Base.deliveries.clear
     @valid_user = create(:user)
   end
  describe "unsuccessful password reset" do
    it "flashes danger when email is blank" do
     get new_password_reset_path(@valid_user.id)
     post password_resets_path, params: { password_reset: { email: " " } }
     expect(flash[:danger]).to be_present
     expect(page).to render_template(:new)
   end
 end
  describe "email input" do
    it "valid email sends password and redirects to root" do
      post password_resets_path, params: { password_reset: { email: @valid_user.email } }
      expect(@valid_user.reset_digest).not_to match (@valid_user.reload.reset_digest)
      expect(ActionMailer::Base.deliveries.size).to eq(1)
      expect(flash[:info]).to be_present
      expect(page).to redirect_to root_url
      expect(assigns(:user)).to eq([user])
    end
 end
end
end`

我关注https://www.railstutorial.org/book/password_reset 12.18

我不确定该怎么办。

您的测试是错误的,因为您在测试中尚未定义user变量。您已定义的 @valid_user。我的猜测是,如果您更改,您的测试将通过: expect(assigns(:user)).to eq([user])expect(assigns(:user)).to eq(@valid_user)

最新更新