3

テストのコード カバレッジに関するレポートを取得するために、前処理を有効にしてkarma.conf.jsを構成しました。この行をプリプロセッサセクションに追加しました。

preprocessors: {
  'public/js/app.js': ['coverage'],
  'public/js/filters.js': ['coverage'],
  'public/js/directives.js': ['coverage'],
  'public/js/services/*.js': ['coverage'],
  'public/js/controllers/*.js': ['coverage'],
},

私が得たのは、まったく間違った報告です。各モジュールとその中の関数のテストを書いたことは知っています。しかし、カバレッジ レポートには、サービスのテストのみが正しく表示されます。

たとえば、ディレクティブのテスト。私はいくつかのテストを書き、そのテストも実行されることを知っています。しかしレポートによると、コード行の 36% をテストしただけです。

取材レポート

この奇妙な動作の理由は何でしょうか?

アップデート:

仕様レポーターからの次の出力が表示されます。

Directives:
      bsTooltip:
          when the element was created:
                PASSED  - should call the popup function
      bsSwitchtext:
          when the model isBusy changes to true:
                PASSED  - should call the button method with loading
          when the model isBusy changes to false changes:
                PASSED  - should call the button method with loading

それで、私のテストはすべて実行されると思います。

4

3 に答える 3

0

プリプロセッサにあるものを次のように変更してみてください。

preprocessors: {
  '**/public/js/**/*.js': ['coverage']
},

プリプロセッサ オブジェクトのディレクタの前に **/ を含む特定の構文に従わない限り、レポートを機能させることができませんでした。

karma-coverage のドキュメントには、プリプロセッサにリストされているディレクトリの前に先行する **/ が含まれています。

このSOの回答に基づいています。

于 2014-05-26T17:45:52.447 に答える