Монголоидные строительные леса проваливаются на креплениях


Когда я создаю новое приложение rails с mongoid:

rails new tddapp --skip-active-record
cd tddapp
echo "gem 'mongoid'" >> Gemfile
bundle
rails g mongoid:config

А затем сгенерируем простую подложку:

rails g scaffold building height:Integer name:String

Леса созданы, и минимальное приложение работает просто отлично. Но тесты, генерируемые скаффолдом, терпят неудачу с:

NoMethodError: undefined method `buildings' for #<BuildingsControllerTest:0x007fa6afbf78d8>

Нарушающая строка показывает, что контроллер тестирования не может найти приспособления:

@building = buildings(:one)
Генератор монголов был достаточно хорош, чтобы создать приспособления в test/fixtures/buildings.yml, указывающие на некоторый уровень сотрудничества со всей идеей функциональных тестов для эшафот.

Есть ли какие-то настройки конфигурации или что-то, что мне нужно изменить, чтобы получить функциональные тесты для загрузки светильников mongoid? Или функциональные тесты лесов, как ожидается, потерпят неудачу с mongoid? (И если да, то почему mongoid беспокоится о создании файлов приспособлений?)

3 3

3 ответа:

Не для личного продвижения, а потому, что я застрял на этой проблеме несколько раз и потому, что я думаю, что это может помочь многим другим людям, я создал mongoid-fixture_set, который доступен на github.

Он работает более или менее так же, как ActiveRecord::FixtureSet, так как я портировал много кода, вам просто нужно привязать его к тестовому классу:

class ActiveSupport::TestCase
  include Mongoid::FixtureSet::TestHelper
  self.fixture_path = "#{Rails.root}/test/fixtures"
end

То же самое делается для ActiveRecord с помощью rails в gem railties в 'lib/rails/test_help.rb '

Mongoid не поддерживает светильники из коробки (Источник ). Я рекомендую вам отказаться от светильников и пойти по маршрутам заводов. factory_girl - Отличный вариант.

Да, я думаю, что светильники-это часть ActiveRecord , которой у вас нет ("rails new tddapp --skip-active-record").

FactoryGirl - довольно простой переход. Это облом, что он не включен из коробки, хотя.