Как запустить интеграционные тесты без изменения базы данных? - PullRequest
0 голосов
/ 03 октября 2019

Я делаю несколько интеграционных тестов для приложения, тестирую маршруты, которые изменяют базу данных. До сих пор я добавил некоторый код в свои тесты, чтобы удалить все изменения, которые я сделал в БД, потому что я не хочу его менять, но это добавляет много работы и звучит неправильно. Затем я подумал о копировании базы данных, тестировании, удалении базы данных в моем скрипте тестирования. Проблема в том, что это слишком долго. Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Вы можете начать транзакцию базы данных в начале теста, а затем откатить ее. Подробности смотрите в следующем посте: https://lostechies.com/jimmybogard/2012/10/18/isolating-database-data-in-integration-tests/

0 голосов
/ 03 октября 2019

Я вижу два возможных способа решения вашей проблемы:

  • База данных в памяти, например (h2)
  • База данных в док-контейнере.

Оба подхода решают вашу проблему, вы можете просто закрыть db / container и запустить его снова, в этом случае db будет чист, и вам не нужно об этом заботиться. Просто запустите новый. Однако есть некоторые особенности:

В памяти проще реализовать и использовать, но могут возникнуть проблемы с диалектами, например, некоторые команды Oracle для SQL недоступны для H2. И в конце концов вы запускаете свои тесты на разных БД

Контейнер Docker с db сложнее подключить к вашей сборке и тестам, но он не содержит проблем с БД с диалектами, а БД в докере такая же, как вашнастоящий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...