【发布时间】:2017-12-21 05:59:15
【问题描述】:
我有一个用 nodeJS 编写的服务器应用程序,用作 REST Api。对于单元测试,我使用 Jasmine,我还想使用一些模拟数据执行一些集成测试。像这样的测试:
从“../support/api-test-client”导入ApiTestClient;
import User from "../../src/model/user";
describe("GET /users", () => {
it("returns an array with all users", done => {
ApiTestClient
.getUsers()
.then(users => {
expect(users).toEqual(jasmine.any(Array));
done();
})
.catch(err => fail(err));
});
});
通过正常的单元测试,我可以简单地模拟 API 调用,但在这种情况下,我必须首先运行服务器应用程序,打开 2 个终端,一个用于npm start,另一个用于npm test。
到目前为止,我已经尝试将此预测试脚本添加到 package.json:
"pretest": "node dist/src/server.js &"
所以进程在后台运行,但感觉不对,因为它会在测试套件结束后运行。
如何自动启动/停止服务器应用程序以运行此集成测试?
【问题讨论】:
-
您是否使用任何框架来处理 REST 请求?难道不能用运行测试的同一个节点实例来处理请求吗?
-
感谢@fonkap,我使用 Express 作为服务器应用程序,使用 Jasmine 进行测试,不涉及其他框架。你到底在暗示什么?
-
抱歉耽搁了,我有点忙,但终于有时间写一个运行示例,希望对你有用。
标签: node.js jasmine automated-tests