私はChutzpahを使用してJavaScriptテストのカバレッジをテストしています。私はreferenceFigureEdit.spec.js単一のテストファイルを実行すると、ここでカバレッジ結果の一例です:Chutzpahのカバレッジ結果が100%より小さい(個人的な方法のため)
私はカバレッジが100%であることを期待するだろうが、それは唯一の91.07パーセントです。
最初の行をクリックすると、テストされたコードを詳細に調べることができます。 「テストでカバーされていない」されている行がハイライトされています
質問:
それらのメソッドが実際に実行されていることを私は
- 大胆に伝えるにはどうすればよいですか
- Chutzpahにカバレッジ結果にこれらの行を含めないように指示しますか?
適用範囲の一部になるためにコードを実行する場所/タイミングにはいくつかの制限がありますか?私はit-methodsの中でデリゲートを呼びます。それらはすでにテスト中のモジュールの構築中に呼び出される必要がありますか?
私のテストコードでは、コンストラクタに渡されるいくつかのデリゲートメソッド(例: "showErrors")が定義されています(例えば、新しいsaveCommand(...、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は直接参照しません。これらの「サブ数字」を正しく解釈する方法と、47.66%の合計の目的は何かについてのドキュメントはどこにありますか?
ファイルexcludesを使用して、外部ライブラリを除外し、テストヘルパーモジュールを除外するようChutzpahに指示します。エクスクルードはAに対する解決法を提供しません.Chutzpah設定ファイルの他のオプションは、特定のメソッドの適用範囲に影響を与える方法を提供していないようです。 – Stefan
ええ、独自のコードカバレッジツールを作成することなく、特定のメソッドを除外することはできません。 –