我在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>'
我该如何解决这个问题?
答案 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所提到的那样。