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% の目的は何ですか?