Дело не в том, что RSpec очищает базу данных, а в том, что рейк-рейк: db: prepare копирует схему (но не содержимое) вашей базы данных dev в вашу * _test db.
Да, вы можете использовать before(:all)
, поскольку транзакции обертываются вокруг каждого отдельного примера, но простой файл фикстуры также будет выполнять ту же работу.
(Существует более сложное общее решение этой проблемы: переход на сервис-ориентированную архитектуру, где ваши службы 'dev' и 'test' будут полностью отдельными экземплярами. Затем вы можете указать свою конфигурацию test db на Разрабатывайте базу данных в своем тестовом сервисе, отключите rake: db: prepare и соберите свой тестовый сервис из миграций по мере его регенерации. Затем вы можете протестировать свои миграции и преобразования данных.)