如何利用docker为每个测试用例提供干净的环境?

时间:2018-06-14 07:23:00

标签: docker testing docker-compose mocha integration-testing

背景:

  1. 服务

    • 我有一个支持DB的服务,并具有以下属性:
    • 它有一些API并将更改传播到DB
    • 我有一个Dockerfile来设置一个干净状态的服务
    • 它会将一些端口绑定到主机以接受API调用
  2. JavaScript测试

    • 有多个测试用例
    • 每个测试用例都需要以 clean 状态连接到服务并执行测试和断言
    • 虽然测试是用JavaScript编写的,但我认为这是一个普遍的问题,并不仅限于JavaScript。
  3. 问题:

    我应该如何设置整个测试套件,以便每次测试都能拥有干净的服务环境?

    到目前为止,Naive Solution出现了:

    1. docker-compose Node.js和每个测试的服务

      • 这个想法基本上是设置一个docker-compose来运行链接的Node.js容器和服务容器中的每个测试用例
      • 在Node.js
      • 中执行单个测试用例
      • 之后拆解
      • 缺点:现在用JavaScript编写测试用例涉及一个新的docker-compose.yml
    2. 使用beforeEachafterEach设置并拆除泊坞窗

      • 缺点:必须确保mocha或其他测试框架不能并行运行,否则它将失败成为同一个端口无法绑定到主机
    3. 存根所有请求并重新开始

      • 这不是我将采取的方法,因为服务本身的一些性质,我们的团队希望使用真实的服务环境来进行测试。
    4. 欢迎任何建议。谢谢。

0 个答案:

没有答案