2 回答
TA贡献1828条经验 获得超13个赞
您可以通过在 docker-compose 文件中定义所有服务来启动您的环境。您还应该在 docker-compose 文件中添加要测试的服务。启动后,您可以在要测试的服务中运行集成测试。
示例 docker-compose 文件:
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 文件中,这样您就可以在集成测试中实际向它们发送请求。请务必将这些服务端点添加到您的环境变量中,以便您可以覆盖将请求发送到的端点。
为了重置您的数据,例如您的数据库,您可以编写固定装置。fixtures 只是帮助函数来重置数据库、缓存等的数据。
TA贡献1860条经验 获得超8个赞
在这种情况下您可以使用的另一个替代工具是Traffic Parrot。
我们最近在我们的服务虚拟化工具中添加了对 gRPC 的支持,该工具包括一个可用于定义模拟行为的用户界面。
有一个教程介绍如何在给定原型文件的情况下通过网络模拟 gRPC 响应。
您还可以在文档中找到有关如何通过网络进行记录和重放的信息。
- 2 回答
- 0 关注
- 144 浏览
添加回答
举报