我在尝试使用迷你裙测试 Rails 4 引擎时遇到了障碍。
我在test/models/job_manager/job_test.rb
中设置了一个模型测试:
require 'test_helper'
module JobManager
describe Job do
before do
@job = Factory.build(:job)
end
it "is a valid object" do
@job.valid?.must_equal true
end
end
end
我的超短裙工厂目前被定义为:
module JobManager
Factory.define :job do |j|
j.title 'Job Title %d'
j.description 'Lorem ipusum dolor sit amet consecateur ad piscin'
end
end
我得到的错误是:
uninitialized constant Job
Exception `NameError' at:
。这可以追溯到模型测试中的第 6 行 ( @job = Factory.build(:job)
)。用@job = Job.new
替换它工作得很好,但是我不再使用超短裙工厂了。无论工厂是否在JobManager
模块中定义,我都会收到此错误。
根据斯蒂芬·塞利斯的说法,Factory.define
不使用当前作用域来解析常量。这解决了问题:
Factory.define :job, class: JobManager::Job do |j|
j.title 'Job Title %d'
j.description 'Lorem ipusum dolor sit amet consecateur ad piscin'
end
请参阅 https://github.com/stephencelis/miniskirt/issues/19。