如何使用超短裙测试Rails引擎模型



我在尝试使用迷你裙测试 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。

最新更新