2012-06-21 125 views
5

我有一個關於在Mocha中測試Node.js的特定情況的問題。假設我在我的應用程序下面的代碼...測試函數調用Mocha的另一個函數

function a() { 
    //... 
} 

function b() { 
    //... 
} 

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

如果我在測試函數C,我怎麼能驗證功能或功能B獲得了叫什麼?有沒有辦法做到這一點?

回答

5

我發現了什麼,我試圖做一個解決方案。 Sinon spies可以幫助確定某個函數是否被調用。

1

這就是code coverage的用途。幸運的是,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. 第一行刪除(前)儀表顯示的代碼覆蓋率需要摩卡JavaScript文件(文件夾)。
  2. 第二行使用jscoverage從原始lib文件夾創建儀表lib-cov文件夾。
  3. 第三行用於確保我的節點代碼知道它需要運行檢測代碼。
  4. 最後,我在google-chrome中查看coverage.html

在我的摩卡測試文件我有一條線,看起來像:

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

這樣,當那麼改動的代碼將被使用MOCHA_COV=1


關於代碼覆蓋一些更有趣的鏈接:

相關問題