Я использую seeds.rb для заполнения некоторых ссылочных данных модели модели:
State.create :name => 'Alabama', :abbreviation => 'AL'
State.create :name => 'Alaska', :abbreviation => 'AK'
# ...
Несмотря на то, что я не использую государственные устройства (так как это начальные данные для начала, я думаю, что это не было бы СУХОЙ, чтобы дублировать это исключительно для тестов), структура тестирования Rails, кажется, удаляет все данные семенного состояния во время тестирование. (Я отбрасываю, воссоздаю, переношу и повторно загружаю тестовый db, и подтвердил, что данные перед запуском unit test.)
Результатом является это утверждение, преуспевающее в seeds.rb, но не выполненное в однострочном тесте:
assert_equal 51, State.all.size
1) Failure:
test_state_seeds_are_present(StateTest) [/test/unit/state_test.rb:24]:
<51> expected but was
<0>.
1 tests, 1 assertions, 1 failures, 0 errors
Я попробовал как явно перечислять негосударственные модели в операторе базового тестового класса, так и переворачивать флаг транзакционных флагов (как и ожидалось, это влияет только на записи, созданные во время теста). Естественно, рассматриваемый тест сам не удаляет эти записи.
Записи состояний всегда удаляются. Есть ли способ сказать Rails просто избавиться от данных семян? Нужно ли дублировать все данные в приборах, чтобы убедиться, что они загружены? Если не считать крупного политического события, я бы ожидал, что данные состояния будут относительно стабильными.
TIA