Поднятие Docker контейнеров в тестах с Go и Dockertest

Для запуска интеграционных тестов в Golang часто требуются внешние зависимости в виде базы данных, брокера сообщений либо еще каких-то сторонних компонентов.В итоге для поднятия внешних сервисов мы используем Docker и пишем docker-compose.yml файл который выглядит как-то так:

Далее до запуска go test мы делаем docker-compose up -d.

Все вроде здорово и все работает, но что если мы будем запускать нужные нам контейнеры прямо в наших тестах? А после завершения мы будем все очищать. И все это без yaml и утилиты docker-compose.

Это возможно при помощи библиотеки https://github.com/ory/dockertest

Что делает наш код? В начале поднимает dockertest pool и запускает нужный нам контейнер при помощи pool.Run:

Далее наша программа ждет пока контейнер не будет готов к работе при помощи метода pool.Retry и когда все готово просто показывает на каком порту работает наш Postgres:

Итого данный кусок кода можно поместить в начало и последнюю часть в конец работы наших тестов.

Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.