测试一个函数用Mocha调用另一个函数

时间:2012-06-21 23:05:19

标签: node.js mocha

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

function a() {
     //...
}

function b() {
    //...
}

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

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

2 个答案:

答案 0 :(得分:5)

我找到了解决方案。 Sinon spies可以帮助确定是否调用了某个函数。

答案 1 :(得分:1)

这就是code coverage的用途。幸运的是,摩卡支持利用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-cov文件夹创建已检测的lib文件夹。
  3. 第三行用于确保我的节点代码知道它需要运行已检测的代码。
  4. 最后,我在coverage.html中查看google-chrome
  5. 在我的mocha测试文件中,我有一行看起来像:

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

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


    有关代码覆盖率的更多有趣链接: