我有一个关于在 Mocha for Node.js 中测试特定情况的问题。假设我的应用程序中有以下代码......
function a() {
//...
}
function b() {
//...
}
function c() {
if(condition) {
a();
} else {
b();
}
}
如果我正在测试函数 c,我如何验证函数 a 或函数 b 是否被调用?有没有办法做到这一点?
我找到了我想要做的事情的解决方案。Sinon 间谍可以帮助确定某个函数是否被调用。
这就是代码覆盖的用途。幸运的是 mocha 支持利用JSCoverage。我使用的 MakeFile 看起来像:
coverage:
rm -rf lib-cov
jscoverage --no-highlight lib lib-cov
@MOCHA_COV=1 mocha --reporter html-cov > coverage.html
google-chrome coverage.html
jscoverage
创建检测文件夹。lib-cov
lib
coverage.html
.google-chrome
在我的 mocha 测试文件中,我有一行如下所示:
var BASE_PATH = process.env.MOCHA_COV ? './../lib-cov/' : './../lib/';
这样,当MOCHA_COV=1
检测代码将被使用时。
关于代码覆盖率的一些更有趣的链接: