node.js - 如何设置 mocha 先运行单元测试,然后启动服务器并运行集成测试
问题描述
我有需要使用一个“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 做我想做的事。我环顾四周,没有什么真正适合我想做的事情。
解决方案
我之前为此使用的一种技术是将两个 npm 命令用于单元和集成测试,然后如果我想在单次执行中运行它们,则将它们组合到一个 npm 命令中。
"test": "npm run test:unit && npm run test:integration"
"test:unit": "mocha test/unit",
"test:integration": "mocha test/integration"
您可以启动服务器作为integration
测试的一部分。
我建议使用test
fornpm test
而不是mocha
fornpm run mocha
因为它是节点项目中更标准的测试命令名称。
希望能帮助到你
推荐阅读
- python - 一次做更多的迭代python
- angular - 条件扩展可观察链
- airflow - Airflow - Executor 报告任务实例已完成(失败),尽管任务说它已排队。任务是在外部杀死的吗?
- angular - 如何检索用户在动态添加行的输入表中输入的数据?
- javascript - 试图将此代码包装在命名函数中
- ionic-framework - 努力将 Ionic Web App 部署到服务器
- c++ - 大型测试用例中 C++ dfs 问题中的小错误
- sql-server - SCD Type 2 by Merge Statement 用于跟踪无唯一键的联接表的更改
- mongodb - 由于 DB 连接,Lamda 上的初始请求缓慢
- bazel - 为什么我在 .bzl 文件中使用“local_repository”,然后它告诉我名称“local_repository”没有定义?