【问题标题】:MiniTest Error: "NameError: uninitialized constant"MiniTest 错误:“NameError:未初始化的常量”
【发布时间】:2014-11-04 05:19:44
【问题描述】:

我正在关注 Michael Hartl 的“Ruby on Rails 教程:学习 Web 开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多 50 个字符,电子邮件最多 255 个字符)。 test/helpers/application_helper_test.rb的内容是:

require 'test_helper'

class ApplicationHelperTest < ActionView::TestCase
  test "full_title_helper" do
    assert_equal full_title,         FILL_IN
    assert_equal full_title("Help"), FILL_IN
  end
end

在运行bundle exec rake test 时,所有测试都通过了,但我看到以下消息在末尾标记为错误:

ERROR["test_full_title_helper", ApplicationHelperTest, 1.820016791]
test_full_title_helper#ApplicationHelperTest (1.82s)
NameError:         NameError: uninitialized constant ApplicationHelperTest::FILL_IN
        test/helpers/application_helper_test.rb:5:in `block in <class:ApplicationHelperTest>'
    test/helpers/application_helper_test.rb:5:in `block in <class:ApplicationHelperTest>'

任何想法如何解决这个问题?

【问题讨论】:

  • 我想FILL_IN 是作为某种练习或其他东西填写的,而不是字面意思。
  • 没错。如果你仔细阅读错误信息,Ruby 会告诉你它不知道FILL_IN 是什么。阅读练习描述railstutorial.org/book/…
  • 你们是绝对正确的,这就是问题所在。我将 FILL_IN 替换为“Ruby on Rails 教程示例应用程序”和“帮助 | Ruby on Rails 教程示例应用程序”,从而解决了错误。谢谢!

标签: ruby-on-rails ruby rake minitest nameerror


【解决方案1】:

原来问题是 FILL_IN 不是字面标题(显然),所以它需要分别替换为“Help | Ruby on Rails Tutorial Sample App”和“Ruby on Rails Tutorial Sample App”。 - 感谢 Nick Veys 和 p11y 的回答。

【讨论】:

    【解决方案2】:

    FILL_IN 常量可以替换为:name, :email

    class User < ActiveRecord::Base
    #...
    has_many :microposts
    validates :name, presence: true
    validates :email, presence: true
    #...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      相关资源
      最近更新 更多