【问题标题】:How do launch/shutdown a Docker container before/after a mocha Test for NodeJS?如何在 NodeJS 的 mocha 测试之前/之后启动/关闭 Docker 容器?
【发布时间】:2021-06-29 01:35:09
【问题描述】:

我们有一个依赖于外部数据库的 NodeJS 应用程序。目前我以两种方式之一运行 mocha 测试:

  • 手动启动 docker 容器,运行测试,关闭容器
  • 关于使用 github 操作进行合并(服务就像一个魅力)

我想要达到的目标:

能够使用启动我的数据库容器的npm run testsuite 运行我的测试,运行 mocha 测试并关闭容器

经过调查,我发现了很多关于如何使用 docker 或 docker-compose 在容器内运行测试的教程,但没有发现如何“仅”为数据库启动临时容器。

非常感谢您的帮助

【问题讨论】:

    标签: node.js docker mocha.js


    【解决方案1】:

    像这样在你的 package.json 中封装你的测试:

    {
      "scripts": {
        "test": "docker-compose up -d && mocha && docker-compose down"
      }
    }
    

    -d 标志将允许 shell 在容器启动后继续处理命令。否则 docker 容器将无限期地阻塞你的 shell(和你的测试)。如果您不使用 docker compose,您可以随时运行:

    docker run -d
    

    希望对您有所帮助!

    【讨论】:

    • "-d 标志将允许 shell 在容器启动后继续处理命令。"所以基本上它甚至不会等待数据库启动然后立即运行查询它会失败的测试?这样做再无用处了。
    【解决方案2】:

    我假设您可能正在使用带有 npm test 的 mocha 运行时启动测试——如果是这种情况,您可能想尝试通过直接从节点文件调用 API 来启动 mocha 测试。

    在您的包装节点文件中,您可以尝试启动容器,然后启动 Mocha。

    //start container
    
    const mocha = new Mocha();
    //more config
    mocha.run( ...etc )
    
    //shut down container
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 2021-09-12
      • 2018-12-23
      相关资源
      最近更新 更多