запросов пишу тесты, если буду юзать эту же базу для тестов тогда я не могу сделать truncate для таблиц после тестов потому что мне необходимо чтобы некоторые данные в таблицах не удалялись (до тестов, которые были) что делается в таком случае? Создаётся тестовая база? Или вешается например большая транзакция, которая потом откатывает запросы сделанные тестами ?
Используй базу туже, ещё туже))
Для тестов поднимай отдельную базу, после тестов её удаляй. Перед тестами накатываются миграции, и фикстуры. Каждый тест - в транзакции. Если тестируемый метод внутри себя тоже использует транзакции, то надо реализовывать логику открытия транзакций так, чтобы если транзакций открыта, то использовался Savepoint. Либо сделать проще и на каждом тесте пересоздавать базу данных. Но мне такой вариант не нравится.
вам надо сделать абстракцию над базой и везде прокинуть ее как зависимость (репозиторий) и во время теста подсовывать не реализацию для бд - а мок
оба варианта валидны. В тех случаях когда транзакция все же нужна, тогда поднимаешь новую. Посмотри на testcontainers
Обсуждают сегодня