5

Node.jsのMochaで特定の状況をテストすることについて質問があります。アプリに次のコードがあるとします...

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

それがコードカバレッジの目的です。幸いなことに、モカは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. 2行目は、元のフォルダーからjscoverageインストルメント化されたフォルダーを作成するために使用します。lib-covlib
  3. 3行目は、インストルメント化されたコードを実行する必要があることをノードコードが認識していることを確認するために使用されます。
  4. 最後にで表示coverage.htmlgoogle-chromeます。

私のmochaテストファイルには、次のような行があります。

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

そうMOCHA_COV=1すれば、インストルメントされたコードが使用されます。


コードカバレッジに関するいくつかの興味深いリンク:

于 2012-06-22T00:05:46.563 に答える