未定义的方法/变量错误,找不到原因

时间:2015-04-12 18:16:46

标签: ruby-on-rails ruby-on-rails-4 testing railstutorial.org

我不明白为什么要通过验证?对于具有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的教程中逐步采用(仅替换用户和利益相关者),所以我不明白我可能做错了什么。

1 个答案:

答案 0 :(得分:0)

我找到了原因: 在测试文件的def设置中有一个拼写错误,所以@stakeholder未定义。