Я тестирую приложение со встроенной функцией модульного тестирования, предоставляемой rails. Проблема в том, что один тест сильно зависит от расчетов с идентификаторами, и мы должны это проверить. Поскольку активная запись не сбрасывает auto_increment при откате транзакции, у нас возникли некоторые проблемы.
Все можно исправить, если есть способ сбросить все таблицы базы данных и снова загрузить приборы, как будто я только что выполнил этот тест.
Сначала я пытаюсь определить метод настройки для сброса всех необходимых значений auto_increment следующим образом:
def setup
ActiveRecord::Base.connection.execute("ALTER TABLE 'table_name1' AUTO_INCREMENT = 1;")
ActiveRecord::Base.connection.execute("ALTER TABLE 'table_name2' AUTO_INCREMENT = 1;")
end
но тесту не удалось выдать эту ужасную ошибку:
ActiveRecord :: StatementInvalid:
Mysql :: Ошибка: SAVEPOINT
active_record_1 не существует:
Откат к SAVEPOINT active_record_1
Затем я пытаюсь вызвать db: test: prepare и db: fixtures: load в методе установки, но это тоже не удалось. Кроме того, это сильно замедлит тест, поскольку метод установки запускается перед каждым тестом в файле, не так ли?
Итак, как я могу запустить эти грабли непосредственно перед определенным набором тестов или тестовым файлом (не знаю, как его вызвать) и только для этого?
Спасибо! :)