Добрый день.
Сегодня появилась специфическая ошибка: есть spec тест с несколькими examples. Изначально для всех контекстов в блоке
before :all я создаю общие данные для теста с помощью
FactoryGirl.create().
В каждом тест кейсе в одном из этих объектов изменяются 2 поля c нужными мне параметрами и сохраняются при помощи save!
Однако, все отлично работает только для первого тест кейса, при последующих вызовах save! появляется ошибка:
Mysql2::Error: Duplicate entry '154' for key 'PRIMARY': INSERT INTO `table_name`
Т.е. по какой-то причине ActiveRecord считает эту запись новой, хотя она была уже создана еще до начала тестов. Вызов в дебаггере
object.new_record? в блоке
before :each еще до изменения данных возвращает true.
Но, если объект был создан при помощи
Model_name.create!(), то вызов
new_record? возвращает false.
Изучение гема active_record не дало ответа на мой вопрос.
Может, кто-нибудь сталкивался с этой проблемой и знает её решение?
RoR v. 3.2.18, rspec-rails v. 2.14.0, ruby v. 2.0.0-p451, factory_girl_rails v. 4.2.1