के लिए स्रोत मानचित्र नहीं ढूंढ सकते हैं मैं कर्म, जैस्मीन और वेबपैक का उपयोग करके अपने टाइपस्क्रिप्ट एप्लिकेशन का परीक्षण करने के लिए (कवरेज के साथ) परीक्षण करने की कोशिश कर रहा हूं। निम्नलिखित के साथ, मैं परीक्षणों को सफलतापूर्वक चलाने में सक्षम हूं, लेकिन कवरेज को सही तरीके से उत्पन्न करने में असमर्थ हूं। मैं karma-remap-coverage
(https://github.com/sshev/karma-remap-coverage) का उपयोग कर रहा हूं और यह काफी आसान लगता है।कर्म + जैस्मीन + टाइपस्क्रिप्ट + वेबपैक
यह दिखता है जैसे कि कुछ दिलचस्प हो रहा है (और मुझे कुछ प्रकार की कवरेज रिपोर्ट मिल रही है) लेकिन यहां कुछ और बदलावों के साथ, संख्याएं काफी बदलती हैं और मैं वास्तव में स्रोतमैप लोड नहीं कर सकता।
यहाँ बुनियादी सेटअप है:
मैं एक src
निर्देशिका है कि 10 .ts
फ़ाइलें हैं की है। इस समय केवल एक के पास .spec
फ़ाइल है।
spec
फ़ाइल बहुत आसान है और सिर्फ पर्याप्त है कि मैं परीक्षण चला सकते हैं साबित करने के लिए किया गया था:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": false,
"sourceMap": true,
"lib": ["es6", "dom"],
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}
और karma.conf.js
:
import ComponentToTest from './componentToTest';
describe('ComponentToTest',() => {
it('should run a test',() => {
expect(1+1).toBe(2);
});
it('should be able to invoke the a method',() => {
spyOn(ComponentToTest, 'foo').and.callThrough();
ComponentToTest.foo('testing foo');
expect(ComponentToTest.foo).toHaveBeenCalled();
});
});
यह एक आकर्षण की तरह काम करता है जब मेरी tsconfig.json
फ़ाइल के साथ रखा फ़ाइल:
module.exports = config => config.set({
frameworks: ['jasmine'],
mime: { 'text/x-typescript': ['ts','tsx'] },
// if I make this a generic './src/**/*.ts' it seems to freeze up
// without throwing any errors or running any tests, but that seems
// like a separate issue...
files: [
'./src/lib/componentToTest.ts',
'./src/lib/componentToTest.spec.ts'
],
preprocessors: {
'./src/**/*.spec.ts': ['webpack'],
'./src/**/*.ts': ['webpack', 'sourcemap', 'coverage']
},
webpack: {
devtool: "source-map",
module: {
rules: [
{
test: /\.ts?$/,
loader: 'ts-loader',
exclude: /node_modules/
}
]
},
resolve: {
extensions: [".ts", ".js"]
}
},
webpackMiddleware: {
quiet: true,
stats: {
colors: true
}
},
// add both "karma-coverage" and "karma-remap-coverage" reporters
reporters: ['progress', 'coverage', 'remap-coverage'],
// save interim raw coverage report in memory
coverageReporter: {
type: 'in-memory'
},
// define where to save final remaped coverage reports
remapCoverageReporter: {
'text-summary': null,
html: './coverage/html',
cobertura: './coverage/cobertura.xml'
},
colors: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: true
});
और एफ inally, मैं एक साधारण Gulp कार्य के साथ परीक्षण शुरू करने हूँ:
Chrome 58.0.3029 (Mac OS X 10.12.3): Executed 1 of 2 SUCCESS (0 secs/0.002 secs)
Chrome 58.0.3029 (Mac OS X 10.12.3): Executed 2 of 2 SUCCESS (0.026 secs/0.004 secs)
[Error: Could not find source map for: "app/src/lib/componentToTest.ts"]
[Error: Could not find source map for: "app/src/lib/componentToTest.spec.ts"]
========================= Coverage summary =========================
Statements : 43.69% (322/737)
Branches : 15.7% (38/242)
Functions : 35.47% (61/172)
Lines : 44.91% (322/717)
====================================================================
तो कुछ हो रहा है:
gulp.task('test', function (done) {
new Server({
configFile: __dirname + '/karma.conf.js',
singleRun: true
}, (exitCode) => {
done();
process.exit(exitCode);
}).start();
});
जब चलाने के लिए, मैं एक निर्गम कि लगता है (अधिकतर) होनहार प्राप्त करें! जो मुझे महसूस करता है कि मैं करीब हूं। जब मैं एक ब्राउज़र में मेरी कवरेज रिपोर्ट पर ब्राउज़ करें, मैं दोनों .spec.ts
फ़ाइल और .ts
फ़ाइल को सूचीबद्ध देखते हैं (जो फिर से है, और करीब हो रही है), लेकिन मैं काफी वहाँ कारणों की एक जोड़ी के लिए नहीं कर रहा हूँ:
- कवरेज रिपोर्ट में
.spec.ts
फ़ाइल शामिल की जा रही है। चूंकि यह परीक्षण फ़ाइल है, इसलिए मैं इसे शामिल नहीं करना चाहता हूं। - स्रोत मानचित्र ठीक से उत्पन्न नहीं किए जा रहे हैं - यह कंसोल में त्रुटियों और विशिष्ट फ़ाइल की कवरेज रिपोर्ट ब्राउज़ करने में असमर्थता से स्पष्ट है।
मुझे लगता है कि मैं बहुत प्यारा हूं। क्या कुछ आसान है कि मुझे याद आ रही है या सुझाव?
अद्यतन:
मुझे एहसास हुआ कि मैं नोड के एक पुराने संस्करण का उपयोग कर रहा था और सोचा था कि कुछ समस्या आ रही हो सकता है।मैं 6.11.0
करने के लिए उन्नत और जब तक कि कुछ भी हल नहीं किया था, यह थोड़ा और अधिक संदर्भ प्रदान किया:
त्रुटियों remap-istanbul
द्वारा रिपोर्ट किया जा रहा है (वहाँ कोई आश्चर्य की बात, वास्तव में):
CoverageTransformer.addFileCoverage (/app/node_modules/remap-istanbul/lib/CoverageTransformer.js:148:17)
मैं [email protected]
उपयोग कर रहा हूँ जो [email protected]
का उपयोग करता है - ऐसा लगता है कि अतीत में remap-istanbul
के साथ समस्याएं हैं, लेकिन संस्करण का उपयोग नहीं कर रहा हूं।
इसके अलावा Webpack 2.6.1
और टाइपप्रति 2.3.2
का उपयोग कर