启动节点服务器并在 CICD 中进行 运行 测试

Start Node server and run test in CICD

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

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

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

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

所以,在我的管道中我有

npm install npm start npm test

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

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

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

如果您使用的是 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)
  ...