未定义 method/variable 错误,找不到原因
Undefined method/variable error, can't find cause
不明白为什么要认证?对于没有摘要的用户来说不是错误的。
当我 运行 下面的模型测试时,出现以下错误:
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 的教程中直接采用的(只是用利益相关者替换了用户),所以我不明白我可能做错了什么。
我找到原因了:
在测试文件的 def 设置中有一个拼写错误,因此 @stakeholder 未定义。
不明白为什么要认证?对于没有摘要的用户来说不是错误的。 当我 运行 下面的模型测试时,出现以下错误:
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 的教程中直接采用的(只是用利益相关者替换了用户),所以我不明白我可能做错了什么。
我找到原因了: 在测试文件的 def 设置中有一个拼写错误,因此 @stakeholder 未定义。