2

Chutzpah を使用して、JavaScript テスト カバレッジをテストしています。単一のテスト ファイルreferenceFigureEdit.spec.jsを実行したときのカバレッジ結果の例を次に示します。

ここに画像の説明を入力

カバレッジは 100% であると期待していますが、91.07% しかありません。

最初の行をクリックすると、テストしたコードを詳細に調べることができます。「テストでカバーされていない」行が強調表示されます。

ここに画像の説明を入力

質問 A :

どうやって

  • これらのメソッドが実際に実行されたことを Chutzpah に伝えるか、
  • Chutzpah にこれらの行をカバレッジ結果に含めないように指示しますか?

成功したカバレッジの一部としてコードを実行する必要がある場所/時期について、いくつかの制限はありますか? it-method 内でデリゲートを呼び出します。テスト中のモジュールの構築中にそれらを呼び出す必要がありますか?

テストしたコードでは、コンストラクター (new saveCommand(..., showErrors) など) に渡されるいくつかのデリゲート メソッド ("showErrors" など) を定義しています。そのデリゲートのメソッド宣言は強調表示され、カバレッジには含まれません。ただし、これらのデリゲートは実際にはテスト中に実行されるため、カバレッジは 100% になると予想されます。

showErrors デリゲートのコードがプライベートであっても、テストしたいと思います (プライベート メソッドをテストする必要があるかどうかは、ここでの私の質問ではありません)。テストでデリゲートを実行するために、saveCommand をモックします。モック化された saveCommand は、渡されたデリゲートを発行し、テストで明示的に呼び出します。

sut.saveCommand.__showErrors();
expect(showAllMessagesSpy).toHaveBeenCalled();

テストは正常に実行され、私にとっては問題ありません。ただし、カバレッジの結果は期待どおりではありません。

質問 B :

参照ファイル errorhandler.js の主なカバレッジ結果は、27.59% のカバレッジを示しています。errorhandler.js のテストはまだありません。この数字は、メイン ファイルの referenceFigureEdit.js の実行中に、errorhandler.js の既存の 29 個のステートメントのうち 8 個が実行されることを意味しますか? メイン ファイルは errorhandler.js を直接参照していますが、utils.js を直接参照していません。これらの「サブ番号」を正しく解釈する方法と、 Total of 47.66% の目的は何ですか?

4

1 に答える 1

0

質問 A: chutzpah.json ファイルを使用して除外を指定できます: "CodeCoverageExcludes": ["path1","path2","path3","etc"] 私の知る限り、除外できるのはファイルのみですただし、特定の行ではありません。

更新: ええ、blanket.js はデフォルトのコード カバレッジ ツールであり、ファイル レベルでのみ除外されます。

質問 B 私も理解しようとしています。

于 2016-05-19T21:49:07.123 に答える