【问题标题】:Start Node server and run test in CICD启动 Node 服务器并在 CICD 中运行测试
【发布时间】:2019-10-15 21:10:35
【问题描述】:

我目前正在尝试将一些测试部署到 Azure 管道(但这应该适用于任何 CICD 框架)

我有一个 express 项目,我正在使用 supertestmocha 在本地运行测试,一切都很好。

现在我想部署到生产环境,并且我想在部署之前运行管道中的测试。

问题是,由于这些测试是针对 http 运行的,因此它们需要运行服务器。

所以,在我的管道中,我有

npm install npm start npm test

但问题是npm test 在服务器启动时没有运行,而是挂在正在运行的服务器中。

有没有办法在服务器启动时启动测试?然后在测试完成后停止服务器?

或者有没有更好的方法来实现这一切?

【问题讨论】:

    标签: node.js azure-devops continuous-integration supertest


    【解决方案1】:

    如果您使用的是 supertest,我建议您导出 express 应用程序进行测试,而不是按照他们的文档中显示的那样运行它,然后您只需要运行 npm installnpm test

    例如:

    app.js

    const express = require('express');
    const app = express();
    
    // Add middlewares
    
    module.exports = app;
    

    test.spec.js

    const app = require('../app.js');
    
    request(app)
      .get('/user')
      .set('Accept', 'application/json')
      .expect('Content-Type', /json/)
      .expect(200)
      ...
    

    【讨论】:

    • 谢谢。我在那里拥有所有这些..但我没有在 Azure 中进行测试..我只是假设..尝试过并且可以工作。我想出的另一个解决方案是使用 pm2 以守护程序模式启动服务器。但当然最好不要为此使用额外的包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2021-05-20
    • 2018-01-14
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    相关资源
    最近更新 更多