6

次のステートメントを含むサンプル ファイル (example.js) から始めました。

x = 42;
if(false)
  x = -1;

単体テスト ファイルがありません。しかし、私が走るとき

istanbul cover example.js 

以下のカバレッジデータがいくつか表示されます

=============================== Coverage summary ===============================
Statements   : 66.67% ( 2/3 )
Branches     : 50% ( 1/2 )
Functions    : 100% ( 0/0 )
Lines        : 66.67% ( 2/3 )
==============================================================================

これは、3 つのステートメントのうち 2 つのステートメントがカバーされていることを意味しますか? その場合、そのコードを対象とする単体テスト ファイルがない場合、このコードがカバーされていることをどのように報告できますか?

コードカバレッジの定義から私が理解していることから、単体テストでカバーされるコードです。単体テストを書いていないのに、2つのステートメントがカバーされているとistabulが言う理由がわかりません。

4

2 に答える 2

5

Istanbul は、どのコード行が実行されたかを確認します。ファイルを実行するだけで、2 行が実行され、3 行目は無視されます。次のようなものを作成する場合:

module.exports = {
  myFunc: function() {
    x = 42;
    if(false) {
      x = -1;
    }
  }
};

別の結果が得られます (x = 42まったく実行されません)。実行される 1 つのステートメントは次のとおりです。module.exports

=============================== Coverage summary ===============================
Statements   : 25% ( 1/4 )
Branches     : 0% ( 0/2 )
Functions    : 0% ( 0/1 )
Lines        : 25% ( 1/4 )
================================================================================
于 2014-05-19T23:48:54.773 に答える