Подобный проблеме, описанной здесь: 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 очищать базу данных перед каждым примером спецификации и следовательно не бросающий дублирующиеся ошибки записи?
Вещи i подумайте:
rake spec
для запуска вашего набора тестов: который создает базу данных с нуля (чтобы убедиться, что ничего не застревает) before (: all)
? Потому что все, что вы создаете внутри before: all
, должно быть снова удалено в after: all
, иначе оно будет существовать. Еще несколько возможных причин:
Вы также можете обнаружить это потому, что вы не заключили этот оператор в:
describe "what it should do" do
@static_model = Factory(:state) # with validate uniqueness of state name
end
Я обнаружил, что это изменение решило эту проблему: Почему factory_girl не выполняет транзакции для меня? - строки остаются в базе после тестов