Как протестировать модели Rails Engine с мини-юбкой?

Я столкнулся с проблемой при попытке проверить движок 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 модуль или нет.

1 ответ

Согласно Стивену Селису, 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.

Другие вопросы по тегам