我不明白为什么要通过验证?对于具有nil摘要的用户来说,这不是假的。 当我运行下面的模型测试时,我收到以下错误:
ERROR["test_authenticated?_should_return_false_for_a_stakeholder_with_nil_digest", StakeholderTest, 0.906488841]
test_authenticated?_should_return_false_for_a_stakeholder_with_nil_digest#StakeholderTest (0.91s)
NoMethodError: NoMethodError: undefined method `authenticated?' for nil:NilClass
test/models/stakeholder_test.rb:126:in `block in <class:StakeholderTest>'
test/models/stakeholder_test.rb:126:in `block in <class:StakeholderTest>'
这是相应的测试(第126行引用assert_not行):
test "authenticated? should return false for a stakeholder with nil digest" do
assert_not @stakeholder.authenticated?('')
end
这是经过验证的吗?方法:
def authenticated?(remember_token)
return false if remember_digest.nil?
BCrypt::Password.new(remember_digest).is_password?(remember_token)
end
方法和测试已经从Hartl的教程中逐步采用(仅替换用户和利益相关者),所以我不明白我可能做错了什么。
答案 0 :(得分:0)
我找到了原因: 在测试文件的def设置中有一个拼写错误,所以@stakeholder未定义。