9

मैं कुछ खाली दिनों के लिए कर्म कवरेज चलाने की कोशिश कर रहा हूं, केवल नीचे खाली खाली पृष्ठ ढूंढने के लिए। Karma coverage empty reportकर्म कवरेज हमेशा खाली आ रहा है

यहाँ मेरी विन्यास है:

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); 

}; 

और यहाँ मेरी कर्म-shim.js फ़ाइल

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); 

फ़ोल्डर संरचना इस प्रकार है: folder structure

किसी भी विचार मैं क्या कर रहा हूँ यहाँ याद आ रही है? बहुत सराहना में मदद करें।

धन्यवाद

+0

आप अपने स्रोत (परीक्षण फ़ाइल की जरूरत नहीं) प्रदान करने का प्रयास किया था फ़ाइल uner "preprocessors"? मुझे लगता है कि आप इसे याद कर रहे हैं। – TypeScripter

+0

कौन सा एक? क्या आप कृपया विस्तृत कर सकते हैं? –

+0

अपने karma.conf.js में आपके पास "प्रीप्रोसेसर" टैग है .. मुझे केवल शिम फ़ाइल दिखाई देती है। आपको अपने स्रोत कोड के लिए भी पथ प्रदान करने की आवश्यकता है। स्रोत कोड के लिए हमेशा कवरेज उत्पन्न होता है। तो इसमें कुछ 'ऐप/**/*। जेएस' होना चाहिए ... मुझे नहीं लगता कि आपको वहां शिम फ़ाइल की आवश्यकता है .. तो इसे हटा दें और केवल स्रोत फ़ाइल के साथ प्रयास करें .. – TypeScripter

उत्तर

1

आपका कर्म config स्पष्ट रूप से स्रोत के लिए एक संदर्भ याद आ रही है। इस प्रकार

config को संशोधित करें:

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

'कवरेज' प्रीप्रोसेसर "कर्म-कवरेज" प्लगइन का संदर्भ दे रहा है? यदि ऐसा है तो आप कर्म-कवरेज हैंडल टाइपस्क्रिप्ट फाइल कैसे बनाते हैं? ऐसा लगता है कि केवल जावास्क्रिप्ट फाइलों के साथ सौदा है। –

+0

@ सैडबेनबोज़िड आपको कर्म-कवरेज प्लगइन आयात करने की आवश्यकता है - मैंने उपरोक्त उत्तर अपडेट किया है। कर्म इसे वहां से ले जाएगा। जब टाइपस्क्रिप्ट की बात आती है तो आपको स्पष्ट रूप से कुछ अतिरिक्त प्रीप्रोसेसर का उपयोग करने की आवश्यकता होती है। कर्म-टीएससी-प्रीप्रोसेसर (मैंने इसका परीक्षण नहीं किया है!) या एक मैं कोणीय परियोजनाओं कोणीय-क्ली में दिन-प्रतिदिन उपयोग करता हूं। उपर्युक्त उत्तर में भी जोड़ा गया। उम्मीद है कि यह मदद करेगा ;-) – Fill

संबंधित मुद्दे