Вы можете ускорить свою среду, определив все свои сервисы в файле docker-compose.Вы также должны добавить сервис, который хотите протестировать, в файл docker-compose.После этого вы можете запустить интеграционные тесты в сервисе, который хотите протестировать.
Пример docker-compose file:
version: '2.2'
services:
service-you-want-to-test:
build: .
image: service-you-want-to-test
container_name: service-you-want-to-test
environment:
- ENVIRONMENT=${ENVIRONMENT}
- REDIS_ADDRESSES=[redis:6379]
- SERVICE_YOU_DEPEND_ON_ENDPOINT=service-you-depend-on:8091
- DB_HOST=mysql
- DB_USER=root
links:
- redis
- mysql
- service-you-depend-on
depends_on:
mysql:
condition: service_healthy
ports:
- 8090:8090
service-you-depend-on:
image: service-you-depend-on:latest
container_name: service-you-depend-on
environment:
- DB_HOST=mysql
- DB_USER=root
links:
- redis
- mysql
depends_on:
mysql:
condition: service_healthy
ports:
- 8091:8091
mysql:
image: mysql:5.7
container_name: mysql
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
volumes:
- ./.docker/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
- ./.docker/mysql/healthcheck-5.7:/var/www/healthcheck
healthcheck:
test: "/var/www/healthcheck"
interval: 5s
timeout: 5s
retries: 5
ports:
- 3306:3306
redis:
image: redis:3.2
container_name: redis
ports:
- 6379:6379
Чтобы настроить среду интеграции, вы можете использовать следующие команды:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
docker build -t service-you-want-to-test .
docker-compose up -d redis mysql
docker-compose up -d --build service-you-want-to-test
После выполнения вышеописанного вы можете просто выполнитьваши интеграционные тесты через командную строку:
go test -v path/to/integration_tests/...
Таким образом, вы должны добавить сервисы, от которых вы зависите, в файл docker-compose, чтобы вы могли фактически отправить им запрос в ваших интеграционных тестах.Обязательно добавьте эти конечные точки службы в переменные среды, чтобы можно было переопределить конечную точку, на которую вы отправляете запрос.
Для сброса данных, например, в вашей базе данных, вы можете записывать данные.Светильники - это просто вспомогательные функции для сброса данных вашей базы данных, кеша и т. Д.