如何设置Mocha以首先运行单元测试,然后启动服务器并运行集成测试

时间:2019-02-21 16:40:34

标签: node.js unit-testing server mocha integration-testing

我有一些单元测试和集成测试,需要使用一个'npm run mocha'命令来运行。在我进行集成测试之前,该套件已经设置好,并且可以与mocha.opts一起正常使用,包括如下步骤:

test/beforeTests.js (sets up some important variables)
test/*.x.js (bulk of the tests, all the files ending in .x.js are run)

当包括我的集成测试时,单元测试失败,因为正在运行的服务器与某些存根函数冲突。因此,我想先运行单元测试,然后启动服务器,运行集成测试并关闭服务器。我尝试通过将mocha.opts更改为:

test/beforeTests.js (sets up some important variables)
test/*.x.js (bulk of the tests, all the files ending in .x.js are run)
test/startServer.js (start the server)
test/integration/*.x.js (run integration tests)
test/afterTests.js (close the server)

beforeTests.js:

before(function(done) { 
 // do something 
});

startServer.js:

before(function() {
 return runServer()
});

beforeTests和startServer都可以工作,但是它们都是在测试开始时执行的,而不是

beforeTest > do unit tests > start server > do integration tests > stop server

我无法将集成测试合并到一个文件中,也不能将单元测试合并到一个文件中。有没有办法设置mocha.opts做我想做的事。我环顾四周,没有什么比我想做的要好。

1 个答案:

答案 0 :(得分:0)

我之前使用的一种技术是使用两个npm命令进行单元和集成测试,然后如果我想一次执行它们,则将它们组合到一个npm命令中。

"test": "npm run test:unit && npm run test:integration"
"test:unit": "mocha test/unit",
"test:integration": "mocha test/integration"

您可以在integration测试中启动服务器。

我建议对test使用npm test,而不对mocha使用npm run mocha,因为它是节点项目中更标准的测试命令名称。

希望有帮助