2016-07-29 1 views
1

항상 100 % 적용 범위입니다.Aurelia-cli, babel-plugin-istanbul, 카르마 코드 커버리지 보고서는 항상 100 %를 반환합니다.

karma.conf.js 파일은 aurelia-cli가 생성하는 파일과 동일합니다.

babel-plugin-istanbul를 사용하고 싶습니다. 코드 적용 범위보고입니다.

package.json ~~> 사용 노드 모듈

"babel-plugin-istanbul": "^1.0.3", 
"jasmine-core": "^2.4.1", 
"karma": "^0.13.22", 
"karma-chrome-launcher": "^1.0.1", 
"karma-jasmine": "^1.0.2", 
"karma-babel-preprocessor": "^6.0.1", 
"karma-coverage": "^1.1.0", 
"karma-jasmine-html-reporter": "^0.2.0", 
"karma-sinon": "^1.0.5", 
"sinon": "^1.17.4" 

karma.conf.js (오렐-CLI가 생성대로 동일)

"use strict"; 
const path = require('path'); 
const project = require('./aurelia_project/aurelia.json'); 

let testSrc = [ 
    { pattern: project.unitTestRunner.source, included: false }, 
    'test/aurelia-karma.js' 
]; 

let output = project.platform.output; 
let appSrc = project.build.bundles.map(x => path.join(output, x.name)); 
let entryIndex = appSrc.indexOf(path.join(output, project.build.loader.configTarget)); 
let entryBundle = appSrc.splice(entryIndex, 1)[0]; 
let files = [entryBundle].concat(testSrc).concat(appSrc); 

module.exports = function(config) { 
    config.set({ 
    basePath: '', 
    frameworks: [project.testFramework.id, 'sinon'], 
    files: files, 
    exclude: [], 
    preprocessors: { 
     [project.unitTestRunner.source]: [project.transpiler.id] 
    }, 
    'babelPreprocessor': { options: project.transpiler.options }, 
    reporters: ['progress', 'kjhtml'], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: true, 
    browsers: ['Chrome'], 
    singleRun: false 
    }); 
}; 

가 cover.js가

파일
export function cover(done) { 
    new Karma({ 
    configFile: __dirname + '/../../karma.conf.js', 
    singleRun: true, 
    reporters: ['coverage'], 
    preprocessors: { 
     'test/unit/**/*.js': ['babel'], 
     'src/**/*.js': ['babel'] 
    }, 
    coverageReporter: { 
     includeAllSources: true, 
     reporters: [ 
     {type: 'html', dir: 'coverage'}, 
     {type: 'text'} 
     ] 
    } 
    }, done).start(); 
} 

감사

당신이 필요로하는

답변

1

전 처리기 섹션에는 테스트가 포함되지 않습니다. 따라서 첫 번째 줄을 제거하고 소스 코드 만 유지하십시오. 적용 범위는 테스트 방법이 아닌 소스 코드에 관한 것입니다. 말했다

preprocessors: { 
    'test/unit/**/*.js': ['babel'], 
    'src/**/*.js': ['babel', 'coverage'] 
}, 

, 나는 심지어 장소에 그와 유사한 문제가되었다

preprocessors: { 

     'src/**/*.js': ['babel'] 
    }, 
1

은 당신이 보험을 적어도 전처리 누락 된 것을 알 수있다.

주요 문제는 카르마의 기본 aurelia-cli 설정이 테스트를 실행하기위한 소스로 앱 번들을 사용한다는 것입니다. 이 방법을 사용하면 isparta을 사용하지 않습니다. 장소에두고

import gulp from 'gulp'; 
import {Server as Karma} from 'karma'; 
import {CLIOptions} from 'aurelia-cli'; 

let appBundle = "scripts/app-bundle.js"; 


export function cover(done) { 
    new Karma({ 
    configFile: __dirname + '/../../karma.conf.js', 
    singleRun: !CLIOptions.hasFlag('watch'), 
    reporters: ['coverage'], 
    logLevel: 'debug', 
    preprocessors: { 
     [project.unitTestRunner.source]: [project.transpiler.id], 
     [appBundle]: ['coverage'] 
    }, 
    coverageReporter: { 
     includeAllSources: true, 
     instrumenters: { 
     isparta: require('isparta') 
     }, 
     instrumenter: { 
     [appBundle]: 'isparta' 
     }, 
     reporters: [ 
     { type: 'html', dir: '.reports/coverage' }, 
     { type: 'text' } 
     ] 
    } 
    }, done).start(); 
} 

export default cover; 

내가 커버리지 테스트를 실행할 수 있습니다, 다음과 같이

나는 작업 구성을 가지고있다. 아아, 적용 범위 보고서는 단일 app-bundle.js 파일을 기반으로하며 각 소스 파일에 대한 항목 별 보고서는 제공하지 않습니다. 그러나 내가 주로 사용하는 범위 인 핵심 범위를 찾기에 충분합니다.

+0

나는 Aurelia에서 코드 적용 범위를 얻는 데 여러 가지 접근법을 보았습니다. 이것이 유일한 해결책입니다. 고맙습니다! –

관련 문제