2011-01-26 2 views
0

Использование ActiveSupport :: TestCase. Я думаю, что это старый Test :: Unit.В rails 3, как я могу обеспечить, чтобы таблицы enum загружались в тестовую базу данных до загрузки моделей?

У меня есть несколько таблиц, которые представляют перечисленные значения. Они никогда не меняются, и я хотел бы использовать их данные в классе для активистов activerecord.

Это вызывает проблему при тестировании, потому что классы моделей загружаются до того, как приборы и приборы откатываются между тестами. Я не могу скопировать таблицы перечисления в прибор, потому что данные еще не загружаются при загрузке моделей.

Есть ли способ довести тестовую базу данных до исходного состояния до загрузки моделей и до начала транзакции прибора?

ответ

0

Как насчет определения метода установки для ваших тестов?

Или посеять базу данных с помощью db/seeds.rb?

+0

db/seeds.rb, похоже, не загружается при запуске тестов. Если я загружу его вручную, он удаляется при запуске тестов. Где я могу подключиться к тестовой установке, чтобы засеять db? Обычная настройка, которая выполняется перед каждым тестом, не будет работать. Он должен запускаться один раз перед всеми тестами. –

+2

Для посева см. Обсуждение здесь: http://stackoverflow.com/questions/1898782/prevent-rails-test-from-deleting-seed-data. В частности, ознакомьтесь с комментариями. –

0

Если они никогда не изменяются, вы можете помещать операторы create непосредственно в свои миграции, чтобы они были созданы, когда таблицы были перестроены - кажется немного грязным, чтобы быть честным, хотя и должен работать.

+1

Миграции не запускаются для запуска тестового прогона. Схема тестирования создается из db/schema.rb, сгенерированного файла. Подумайте об этом, у меня такая же проблема с представлениями db в тестах, поскольку представления не клонируются в db/schema.rb. Если бы я мог установить, что входит в db/schema.rb, я мог бы решить обе проблемы, но, возможно, есть лучший способ. –

Смежные вопросы