Монголоидные строительные леса проваливаются на креплениях
Когда я создаю новое приложение 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 ответа:
Не для личного продвижения, а потому, что я застрял на этой проблеме несколько раз и потому, что я думаю, что это может помочь многим другим людям, я создал
mongoid-fixture_set
, который доступен на github.Он работает более или менее так же, как
ActiveRecord::FixtureSet
, так как я портировал много кода, вам просто нужно привязать его к тестовому классу:class ActiveSupport::TestCase include Mongoid::FixtureSet::TestHelper self.fixture_path = "#{Rails.root}/test/fixtures" end
То же самое делается для
ActiveRecord
с помощью rails в gemrailties
в 'lib/rails/test_help.rb '
Mongoid не поддерживает светильники из коробки (Источник ). Я рекомендую вам отказаться от светильников и пойти по маршрутам заводов. factory_girl - Отличный вариант.
Да, я думаю, что светильники-это часть ActiveRecord , которой у вас нет ("
rails new tddapp --skip-active-record
").FactoryGirl - довольно простой переход. Это облом, что он не включен из коробки, хотя.