背景:
-
服务
- 我有一个支持DB的服务,并具有以下属性:
- 它有一些API并将更改传播到DB
- 我有一个Dockerfile来设置一个干净状态的服务
- 它会将一些端口绑定到主机以接受API调用
-
JavaScript测试
- 有多个测试用例
- 每个测试用例都需要以 clean 状态连接到服务并执行测试和断言
- 虽然测试是用JavaScript编写的,但我认为这是一个普遍的问题,并不仅限于JavaScript。
醇>
问题:
我应该如何设置整个测试套件,以便每次测试都能拥有干净的服务环境?
到目前为止,Naive Solution出现了:
-
docker-compose Node.js和每个测试的服务
- 这个想法基本上是设置一个docker-compose来运行链接的Node.js容器和服务容器中的每个测试用例
- 在Node.js
中执行单个测试用例
- 之后拆解
- 缺点:现在用JavaScript编写测试用例涉及一个新的docker-compose.yml
-
使用beforeEach
和afterEach
设置并拆除泊坞窗
- 缺点:必须确保
mocha
或其他测试框架不能并行运行,否则它将失败成为同一个端口无法绑定到主机
-
存根所有请求并重新开始
- 这不是我将采取的方法,因为服务本身的一些性质,我们的团队希望使用真实的服务环境来进行测试。
醇>
欢迎任何建议。谢谢。