【问题标题】:NameError: uninitialized constantNameError:未初始化的常量
【发布时间】:2012-01-02 12:07:01
【问题描述】:

我在 Rails 中进行单元测试.., 这是我的代码位于 test\unit\sample_test.rb

require 'test_helper'
require 'test/unit'
require 'sample'

class SampleTest < ActiveSupport::TestCase
    test "student details" do
        student = Student.new
        student.Date_of_joining = DateTime.now
        student.id = "123"
     assert_student student 
   end
end

我的 app\models\sample.rb 包含以下内容..,

class Sample     
  def assert_student(student)
        #assert_equal "123", student.external_reference
        "#{student_id}"
   end
end

当我运行“rake test:units”时,它显示以下错误

 test_student_details(SampleTest):
    NameError: uninitialized constant SampleTest::Student
        test/unit/sample_test.rb:7:in `block in <class:SampleTest>'

我该如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    您必须要求您的 SampleTest::Student 用于测试它的文件。

    【讨论】:

      【解决方案2】:

      Rails 应该负责在 test_helper 中为您加载模型,因此您无需明确要求“样本”。 Student 类在哪里定义?

      在 Rails 3.x 中默认情况下不会自动加载 lib/ 中的文件,因此在这种情况下您需要明确要求 'student'。

      【讨论】:

        【解决方案3】:

        尝试像这样添加:: 全局范围访问器:

        student = ::Student.new
        

        【讨论】:

          【解决方案4】:

          看起来您正在示例单元测试中实例化一个 Student 对象。这是故意的还是笔误?

          正如@Jesse Stormier 所提到的,您的问题的答案取决于 ActiveRecord::Student 类实现的细节和位置。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-01-19
            • 2015-10-29
            • 1970-01-01
            • 1970-01-01
            • 2018-05-04
            • 2016-06-12
            • 2015-03-01
            • 2018-06-26
            相关资源
            最近更新 更多