Я использую seed.rb для заполнения некоторых справочных данных модели состояния:
State.create :name => 'Alabama', :abbreviation => 'AL'
State.create :name => 'Alaska', :abbreviation => 'AK'
# ...
Хотя я не использую фикстуры состояния (поскольку это исходные данные для начала, я думаю, что было бы не СУХО дублировать это исключительно для тестов), среда тестирования Rails, похоже, удаляет все исходные данные состояния во время тестирования. (Я удаляю, воссоздаю, переношу и повторно заполняю тестовую базу данных и подтверждаю, что данные есть до запуска модульного теста.)
В результате это утверждение успешно выполняется в seed.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, чтобы он просто убрал начальные данные? Нужно ли мне дублировать все данные в фикстурах, чтобы убедиться, что они перезагружаются? Если не считать крупных политических событий, я ожидаю, что данные о состоянии будут относительно стабильными.
Тиа