Ruby on rails 4 从Michael Hartl教程验证密码的rspec测试失败
在Michael Hartl教程的第6章中,以下测试应该通过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
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,则通过
放在{subject.reload}
之后的描述“身份验证方法的返回值”之前{@user.save}
或(如果这不起作用)之后的描述“使用无效密码”之后的do
。不是“新”用户,最好说“刷新您的用户实例”。仍然是一个单一的失败。这是非常奇怪的,因为这是与教程完全相同的代码(用型号名称修改)。。
specify { expect(user_for_invalid_password).to be_falsey }