NameError:未初始化的常量

时间:2012-01-02 12:07:02

标签: ruby-on-rails ruby

我在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>'

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

您必须要求SampleTest :: Student进行测试的文件。

答案 1 :(得分:2)

Rails应该在test_helper中为您加载模型,因此您无需明确要求'sample'。定义Student类在哪里?

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

答案 2 :(得分:0)

尝试添加::全局范围访问器,如下所示:

student = ::Student.new

答案 3 :(得分:0)

看起来您正在Sample单元测试中实例化一个Student对象。这是故意还是错字?

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