5

我有一个关于在 Mocha for Node.js 中测试特定情况的问题。假设我的应用程序中有以下代码......

function a() {
     //...
}

function b() {
    //...
}

function c() {
    if(condition) {
         a();
    } else {
         b();
    }
}

如果我正在测试函数 c,我如何验证函数 a 或函数 b 是否被调用?有没有办法做到这一点?

4

2 回答 2

5

我找到了我想要做的事情的解决方案。Sinon 间谍可以帮助确定某个函数是否被调用。

于 2012-06-25T18:09:58.417 回答
1

这就是代码覆盖的用途。幸运的是 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
  1. 第一行删除了 Mocha 显示代码覆盖率所需的(以前的)检测 javascript 文件(文件夹)。
  2. 第二行用于从原始文件夹jscoverage创建检测文件夹。lib-covlib
  3. 第三行用于确保我的节点代码知道它需要运行检测代码。
  4. 最后我查看coverage.html.google-chrome

在我的 mocha 测试文件中,我有一行如下所示:

var BASE_PATH   = process.env.MOCHA_COV ? './../lib-cov/' : './../lib/';

这样,当MOCHA_COV=1检测代码将被使用时。


关于代码覆盖率的一些更有趣的链接:

于 2012-06-22T00:05:46.563 回答