启动节点服务器并在 CICD 中进行 运行 测试
Start Node server and run test in CICD
我目前正在尝试将一些测试部署到 Azure 管道(但这应该适用于任何 CICD 框架)
我有一个快速项目,我正在使用 supertest
和 mocha
到 运行 在本地测试,一切都很好。
现在我想部署到生产环境,并且我想 运行 在部署发生之前在管道中进行测试。
问题在于,由于这些测试是针对 http 的 运行ning,因此它们需要一个服务器 运行ning。
所以,在我的管道中我有
npm install
npm start
npm test
但问题是 npm test
在服务器启动时没有 运行ning,而是挂在服务器 运行ning 中。
有没有办法在服务器启动时启动测试?然后在测试完成后停止服务器?
或者有更好的方法来实现这一切吗?
如果您使用的是 supertest,我建议导出用于测试的 Express 应用程序而不是 运行 如他们的文档中所示,然后您只需要 运行 npm install
和 npm 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 管道(但这应该适用于任何 CICD 框架)
我有一个快速项目,我正在使用 supertest
和 mocha
到 运行 在本地测试,一切都很好。
现在我想部署到生产环境,并且我想 运行 在部署发生之前在管道中进行测试。
问题在于,由于这些测试是针对 http 的 运行ning,因此它们需要一个服务器 运行ning。
所以,在我的管道中我有
npm install
npm start
npm test
但问题是 npm test
在服务器启动时没有 运行ning,而是挂在服务器 运行ning 中。
有没有办法在服务器启动时启动测试?然后在测试完成后停止服务器?
或者有更好的方法来实现这一切吗?
如果您使用的是 supertest,我建议导出用于测试的 Express 应用程序而不是 运行 如他们的文档中所示,然后您只需要 运行 npm install
和 npm 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)
...