0

JQuery Mobile プロジェクトのコード カバレッジには Karma を使用し、テストには QUnit または Jasmine を使用したいと考えています。
必要なすべてのノード パッケージ (karma、karma-cli、karma-coverage、jasmine/qunitjs、karma-chrome-launcher) をインストールし、次の karma.conf ファイルを作成しました。

カルマ.conf.js

// Karma configuration
module.exports = function(config) {
config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [
        'absence.js',
        'absence.test.js'
    ],
    exclude: [
    ],
    preprocessors: {
     'absence.js': ['coverage']
    },
    reporters: ['progress', 'coverage'],
    coverageReporter: {
        type : 'html',
        dir: 'coverage/'
    },
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  })
}

そしてこのテストファイル(Jasmineを使用):

不在.test.js

describe("A suite", function() {
  it("contains spec with an expectation", function() {
    expect(true).toBe(true);
  });
});

私のプロジェクトでカルマスタートを開始します。私の不在.jsファイルには、この関数のみが含まれています:

function test() {
    var foo = 'bar';
}

私のカバレッジレポートが生成され、私の不在.jsファイルでカバーされているコードの50%を示しています。

しかし、「if」ステートメントを使用して関数を変更すると、次のようになります。

function test() {
    if (1 == 1){
       var foo = "bar";
    }
}

コンソールに次のエラーがあります。

ERROR [preprocessor.coverage]: Object [object Object] has no method 'isIdentifierPart'

実際、条件ステートメントまたはループを使用すると、このエラーが発生しました。カルマの設定に何か問題がありますか?

編集

Node.js とすべての karma パッケージを再インストールしましたが、最終的には機能しますが、奇妙な問題が発生しました。カバレッジレポーター ディレクトリを指定した場合、生成されたすべての html ファイルがソース ディレクトリに配置されます...
何か考えはありますか?

4

1 に答える 1

0

以前のバージョンの karma-coverage パッケージを使用すると、もう問題はありません。最新バージョン (0.5.0) をアンインストールし、0.2.7 をインストールしました。

于 2015-08-07T13:16:51.787 に答える