我遇到問題karma-browserify
與karma-coverage
一起使用。我花了很多時間來弄清楚什麼是錯誤的,但沒有找到解決辦法。問題Karma-Browserify + Karma-Coverage
這裏是我的js文件(該功能不會做任何事情,他們只是嘲笑測試代碼覆蓋率)
// src/js/utilities/form-validation.js
let includedInTest =() => true;
let alsoIncludedInTest =() => true;
let notIncludedInTest =() => true;
let alsoNotIncludedInTest =() => true;
export default {
validateInput,
browserifyTest
};
這是我的測試文件
// src/spec/utilities/form-validation.spec.js
import formUtilities from '../../js/utilities/form-validation';
describe('Form validation functions', function() {
it('Should return "true"', function() {
expect(formUtilities.includedInTest()).toBe(true);
});
it('Should return "true"', function() {
expect(formUtilities.alsoIncludedInTest()).toBe(true);
});
});
最後,是我karma.conf
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['browserify', 'jasmine-jquery', 'jasmine'],
files: [
'bower_components/jquery/dist/jquery.js',
'bower_components/jquery-validation/dist/jquery.validate.js',
'src/js/**/*.js',
'src/spec/**/*.spec.js'
],
exclude: [
'src/js/index.js'
],
preprocessors: {
'src/js/**/*.js': ['browserify', 'coverage'],
'src/spec/**/*.spec.js': ['browserify']
},
browserify: {
debug: true,
transform: [
['babelify', { presets: ['es2015'] }]
]
},
reporters: ['mocha', 'coverage'],
mochaReporter: {
colors: {
success: 'green',
info: 'bgBlue',
warning: 'cyan',
error: 'bgRed'
},
symbols: {
success: '√',
info: '#',
warning: '!',
error: 'x'
}
},
coverageReporter: {
instrumenters: { isparta: require('isparta') },
instrumenter: {
'src/**/*.js': 'isparta'
},
dir: 'coverage',
subdir: '.',
reporters: [
{ type: 'html', dir: 'coverage' },
{ type: 'text-summary' }
],
check: {
global: {
statements: 90,
branches: 90,
functions: 90,
lines: 90
},
each: {
statements: 90,
branches: 90,
functions: 90,
lines: 90
}
},
watermarks: {
statements: [50, 75],
functions: [50, 75],
branches: [50, 75],
lines: [50, 75]
}
},
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['PhantomJS'],
singleRun: false,
concurrency: Infinity
});
};
這個配置收益率這一結果
==== Coverage summary ====
Statements : 100% (1/1)
Branches : 100% (2/2)
Functions : 100% (0/0)
Lines : 100% (1/1)
=============
這顯然是錯誤的,因爲我對「form-validation.js」有4個函數,並且正在測試其中的2個函數,但根據彙總報告,沒有要測試的函數。
這從coverage/index.html
線揭示了只有一行被解析由karma-coverage
:所述變換陣列中
我還試圖 'browserify-伊斯坦布爾'(除去instrumenters從 「coverageReport」)
transform: [
['babelify', { presets: ['es2015'] }],
'browserify-istanbul'
]
但這生成錯誤
18 08 2017 15:50:14.617:ERROR [karma]: TypeError: Cannot read property 'start' of undefined
at /Users/gferraz/Sites/OAA-Refactor/node_modules/istanbul/lib/object-utils.js:59:44
at Array.forEach (native)
at Object.addDerivedInfoForFile (/Users/gferraz/Sites/OAA-Refactor/node_modules/istanbul/lib/object-utils.js:58:37)
at Collector.fileCoverageFor (/Users/gferraz/Sites/OAA-Refactor/node_modules/istanbul/lib/collector.js:94:15)
at /Users/gferraz/Sites/OAA-Refactor/node_modules/istanbul/lib/collector.js:108:30
at Array.forEach (native)
at Collector.getFinalCoverage (/Users/gferraz/Sites/OAA-Refactor/node_modules/istanbul/lib/collector.js:107:22)
at checkCoverage (/Users/gferraz/Sites/OAA-Refactor/node_modules/karma-coverage/lib/reporter.js:148:33)
at /Users/gferraz/Sites/OAA-Refactor/node_modules/karma-coverage/lib/reporter.js:257:32
at Array.forEach (native)
at Collection.forEach (/Users/gferraz/Sites/OAA-Refactor/node_modules/karma/lib/browser_collection.js:93:21)
at /Users/gferraz/Sites/OAA-Refactor/node_modules/karma-coverage/lib/reporter.js:247:16
at Array.forEach (native)
at CoverageReporter.onRunComplete (/Users/gferraz/Sites/OAA-Refactor/node_modules/karma-coverage/lib/reporter.js:246:15)
at Server.<anonymous> (/Users/gferraz/Sites/OAA-Refactor/node_modules/karma/lib/events.js:13:22)
at emitTwo (events.js:111:20)
有關如何修復配置文件的任何建議?
謝謝。