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 ファイルがソース ディレクトリに配置されます...
何か考えはありますか?