我正在为一个库构建一个自动构建过程,该过程要求组成它的所有模块都具有自己的单元测试,每个单元测试均由不同的作者编写。在构建器启动之前,我想调用一个执行以下两项操作的测试工具:
尽管这通常可以通过命令行来实现,但我想避免不得不调用bash脚本来运行带有一系列选项的mocha。这样做是错误的,您不需要在JS脚本中调用bash。另外,我希望单元测试的结果可以确定构建是否可以继续进行,也许还可以提醒模块的作者测试存在问题。
我当前的代码看起来与Mocha团队here提供的示例基本相同。
测试文件结构如下:
test
├── testRunner.js
└── unitTests
├── test1.js
├── test2.js
├── test3.js
对于上述目标1,我尝试在testRunner文件中简单地const expect = require("chai").expect;
,但是当测试运行时,失败并显示“未定义期望”。
对于目标2,我尝试使用API documentation中描述的事件来建立一些测试所需的修改后的原型,但没有成功。想法是模拟多个测试套件中存在的多个相同的before
和after
调用。
API文档没有使用示例,尝试监听所描述的事件是行不通的,这可能是因为我正在监听错误的内容。像这样:
...(code from the example linked above)
// Run the tests.
let mochaRunner = mocha.run(function(failures){
process.exitCode = failures ? 1 : 0; // exit with non-zero status if there were failures
});
mochaRunner.on('start', function(eventObj){
console.log(eventObj);
});
也许整个方法是错误的,任何帮助都是值得赞赏的。