9

저는 이제 며칠 동안 카르마 범위를 실행하려고했습니다. 아래의 빈 빈 페이지를 찾아야합니다. 다음과 같이카르마 범위는 항상 비어 있습니다.

Error.stackTraceLimit = Infinity; 
require('es6-shim'); 
require('reflect-metadata'); 
require('ts-helpers'); 
require('zone.js/dist/zone'); 
require('zone.js/dist/long-stack-trace-zone'); 
require('zone.js/dist/jasmine-patch'); 
require('zone.js/dist/async-test'); 
require('zone.js/dist/fake-async-test'); 

var appContext = require.context('./app', true, /\.spec\.ts/); 
appContext.keys().forEach(appContext); 

var testing = require('@angular/core/testing'); 
var browser = require('@angular/platform-browser-dynamic/testing'); 

testing.setBaseTestProviders(browser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, browser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS); 

폴더 구조는 내 카르마 - shim.js 파일

var path = require('path'); 

var webpackConfig = require('./webpack.common'); 

module.exports = function (config) { 
    var _config = { 
    basePath: '', 
    frameworks: ['jasmine'], 
    files: [ 
     { pattern: './karma-shim.js', watched: false } 
    ], 
    exclude: [], 
    preprocessors: { 
     './karma-shim.js': ['webpack', 'sourcemap', 'coverage'] 
    }, 
    client: { 
     captureConsole: false 
    }, 
    webpack: webpackConfig, 

    webpackMiddleware: { 
     stats: 'errors-only' 
    }, 

    coverageReporter: { 
     dir: 'coverage/', 
     reporters: [{ 
     type: 'json', 
     dir: 'coverage', 
     subdir: 'json', 
     file: 'coverage-final.json' 
     }] 
    }, 

    remapIstanbulReporter: { 
     src: 'coverage/json/coverage-final.json', 
     reports: { 
     lcovonly: 'coverage/json/lcov.info', 
     html: 'coverage/html', 
     'text': null 
     }, 
     timeoutNotCreated: 1000, // default value 
     timeoutNoMoreFiles: 1000 // default value 
    }, 

    webpackServer: { 
     noInfo: true // please don't spam the console when running in karma! 
    }, 
    reporters: ["mocha", "coverage", "karma-remap-istanbul"], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_ERROR, 
    autoWatch: false, 
    browsers: ['PhantomJS'], // you can also use Chrome 

    singleRun: true 
    }; 

    config.set(_config); 

}; 

그리고 여기 : 여기 Karma coverage empty report

내 구성의 I를 누구인지 folder structure

어떤 생각 여기 없습니까? 많은 도움을 주셨습니다.

감사

+0

당신이 당신의 소스를 (테스트 파일이 필요하지 않습니다)를 제공하려고 했 파일 Uner에 "전처리 기"? 나는 당신이 그것을 잃어 버렸다고 생각한다. – TypeScripter

+0

어느 쪽? 제발 좀 더 자세히 설명해 주실 수 있습니까? –

+0

karma.conf.js에는 "preprocessors"태그가 있습니다. 거기에 shim 파일 만 있습니다. 소스 코드에 대한 경로도 제공해야합니다. Coverage는 항상 소스 코드에 대해 생성됩니다. 그래서 그것은 'app/**/* .js'와 같은 것을 가지고 있어야합니다 ... 나는 심 파일이 필요하다고 생각하지 않습니다 .. 그래서 그것을 제거하고 소스 파일 만 사용해보십시오 .. – TypeScripter

답변

1

귀하의 카르마 설정은 소스에 참조가없는 명확 입니다. 다음과 같이

설정을 수정하십시오 :

module.exports = function (config) { 
    var _config = { 
     [...] 
     preprocessors: { 
      // Remove coverage as preprocessor for your tests - 
      // Istambul (runs coverage behind the scene for karma) will 
      // instrumentate this 
      './karma-shim.js': ['webpack', 'sourcemap'], 
      // Add path to your source (.js or .ts - depands on your project) 
      './index.ts': [ 'coverage' ] 
     }, 
     [...] 
    }, 
    [...] 
} 

설명 : 범위는 단위 테스트에 대한 코드를 테스트 - 당신은 카르마가 범위를 분석 얻을 수있는 코드에 대한 진입 점을 제공해야합니다.

엑스트라 - 추가 카르마 커버리지 플러그인 :

module.exports = function (config) { 
    var _config = { 
     [...] 
     plugins: [ 
      require('karma-coverage') 
     ], 
     [...] 
    }, 
    [...] 
} 

엑스트라 - 카르마 & 타이프 파일 :

module.exports = function (config) { 
    var _config = { 
     [...] 
     plugins: [ 
      require('@angular/cli/plugins/karma') 
     ], 
     [...] 
    }, 
    [...] 
    preprocessors: { 
     './src/test.ts': [ '@angular/cli' ], 
     './index.ts': [ 'coverage' ] 
    }, 
    [...] 
    mime: { 
     'text/x-typescript': [ 'ts', 'tsx' ] 
    }, 
    [...] 
} 
+0

'coverage'전처리 기가 "karma-coverage"플러그인을 참조합니까? 그렇다면 karma-coverage가 TypeScript 파일을 어떻게 처리합니까? 자바 스크립트 파일 만 다루는 것 같습니다. –

+0

@SaadBenbouzid 같이 karma-coverage 플러그인을 가져와야합니다. - 위의 답변을 업데이트했습니다. 카르마가 거기에서 가져갈 것입니다. 타이프 스크립트에 관해서는 분명히 여분의 전 처리기를 사용해야합니다. karma-tsc-preprocessor (저는 이것을 테스트하지 않았습니다!) 또는 각도 프로젝트 angi-cli에서 매일 사용합니다. 또한 위의 답변에 추가되었습니다. 희망이 도움이 될 것입니다 ;-) – Fill

관련 문제