factory_girl + rspec, кажется, не откатывает изменения после каждого примера

Подобный проблеме, описанной здесь: http://rpheath.com/posts/411-how-to-use-factory-girl-with-rspec

короче говоря (shorten'd код):

spec_helper:

config.use_transactional_fixtures = true
config.use_instantiated_fixtures  = false

factories.rb:

Factory.define :state do
  f.name "NY"
end

в моей спецификации

before(:each) do 
  @static_model = Factory(:state) # with validate uniqueness of state name
end

ошибка:

дублирующееся имя записи "Нью-Йорк" и т.д.


Вопрос: не был Должен rspec очищать базу данных перед каждым примером спецификации и следовательно не бросающий дублирующиеся ошибки записи?

18
задан Rex 26 July 2010 в 09:49
поделиться

3 ответа

Вещи i подумайте:

  • используете ли вы rake spec для запуска вашего набора тестов: который создает базу данных с нуля (чтобы убедиться, что ничего не застревает)
  • используете ли вы где-нибудь before (: all) ? Потому что все, что вы создаете внутри before: all , должно быть снова удалено в after: all , иначе оно будет существовать.
40
ответ дан 30 November 2019 в 06:35
поделиться

Еще несколько возможных причин:

  • Там все еще сидит фикстура States.yml
  • Кто-то играл с тестом скрипта / консоли и потом забыл очистить его.
2
ответ дан 30 November 2019 в 06:35
поделиться

Вы также можете обнаружить это потому, что вы не заключили этот оператор в:

describe "what it should do" do
  @static_model = Factory(:state) # with validate uniqueness of state name
end

Я обнаружил, что это изменение решило эту проблему: Почему factory_girl не выполняет транзакции для меня? - строки остаются в базе после тестов

2
ответ дан 30 November 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: