Ruby on rails 4 从Michael Hartl教程验证密码的rspec测试失败

Ruby on rails 4 从Michael Hartl教程验证密码的rspec测试失败,ruby-on-rails-4,rspec-rails,Ruby On Rails 4,Rspec Rails,在Michael Hartl教程的第6章中,以下测试应该通过 describe "with invalid password" do let(:user_for_invalid_password) { found_user.authenticate("invalid") } it { should_not eq user_for_invalid_password } specify { expect(user_for_invalid_password).to be_fal

在Michael Hartl教程的第6章中,以下测试应该通过

   describe "with invalid password" do
   let(:user_for_invalid_password) { found_user.authenticate("invalid") }
   it { should_not eq user_for_invalid_password }
   specify { expect(user_for_invalid_password).to be_false }
   end
然而,在19次测试中,这是唯一一次失败

我的型号叫Utisulateur(法语用户)

这是完整的spec文件(fund_用户变量设置在同一块中,位于文件末尾)

和模型文件:

    class Utilisateur < ActiveRecord::Base

      before_save { self.email = email.downcase }

      validates :nom,  presence: true, length: { maximum: 50 }


      VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
      validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }

      has_secure_password
      validates :password, length: { minimum: 6 }

end
class-usilizateur
如果您仍然需要答案。 您从以下字符串收到此错误:

specify { expect(user_for_invalid_password).to be_false }
您必须使用:

specify { expect(user_for_invalid_password).to be_falsey }
请参见rspec echo中的相关信息:

1) 密码无效的authenticate方法的用户返回值应为false 失败/错误:指定{expect(用户密码无效)。为\u false} 预期false将响应
false?
或者您的意思是
be false
be\u false

  • 期望(实际)。如果实际是真实的(而不是零),则通过 (或假)
  • expect(实际值)。为真#如果实际值=真,则通过
  • 期望值(实际值)。如果实际值为falsy(零或 (错误)
  • expect(实际值)。为false#如果实际值==fals,则通过

请在此处发布您收到的错误消息。实际上,这不是错误消息,仅以下失败测试通知:“rspec./spec/models/usiliateur_spec.rb:125#usiliateur authenticate method with invalid password的返回值应该为false”,因为它应该实际通过如果您尝试让一个新用户进行密码测试会怎么样?将
放在{subject.reload}
之后的
描述“身份验证方法的返回值”之前{@user.save}
或(如果这不起作用)之后的
描述“使用无效密码”之后的do
。不是“新”用户,最好说“刷新您的用户实例”。仍然是一个单一的失败。这是非常奇怪的,因为这是与教程完全相同的代码(用型号名称修改)。。
specify { expect(user_for_invalid_password).to be_falsey }