मैंने अपने लिए ग्रंट का उपयोग करके इस समस्या को हल किया। मेरे पास नीचे ग्रंट स्क्रिप्ट है। स्क्रिप्ट जो करती है वह विशिष्ट परीक्षण के कमांड लाइन पैरामीटर को चलाने के लिए ले जाती है और टेस्ट की एक प्रतिलिपि बनाता है और इस विशिष्ट परीक्षण नाम को वहां रखता है।
इसे चलाने के लिए, पहले ग्रंट-क्ली का उपयोग करके इंस्टॉल करें:
npm install -g grunt-cli
नीचे दिए गए ग्रन्ट निर्भरता को अपने पैकेज में रखें। json:
"grunt": "^1.0.1",
"grunt-contrib-clean": "^1.0.0",
"grunt-contrib-copy": "^1.0.0",
"grunt-exec": "^2.0.0",
"grunt-string-replace": "^1.3.1"
इसे चलाने के लिए नीचे दी गई ग्रन्ट फ़ाइल को अपने रूट फ़ोल्डर में Gruntfile.js के रूप में सहेजें। फिर कमांड लाइन से इसे इस प्रकार चलाएं:
grunt --target=app.component
यह app.component.spec.ts चलेगा।
ग्रन्ट फ़ाइल इस प्रकार है:
/*
This gruntfile is used to run a specific test in watch mode. Example: To run app.component.spec.ts , the Command is:
grunt --target=app.component
Do not specific .spec.ts. If no target is specified it will run all tests.
*/
module.exports = function(grunt) {
var target = grunt.option('target') || '';
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
clean: ['temp.conf.js','src/temp-test.ts'],
copy: {
main: {
files: [
{expand: false, cwd: '.', src: ['karma.conf.js'], dest: 'temp.conf.js'},
{expand: false, cwd: '.', src: ['src/test.ts'], dest: 'src/temp-test.ts'}
],
}
},
'string-replace': {
dist: {
files: {
'temp.conf.js': 'temp.conf.js',
'src/temp-test.ts': 'src/temp-test.ts'
},
options: {
replacements: [{
pattern: /test.ts/ig,
replacement: 'temp-test.ts'
},
{
pattern: /const context =.*/ig,
replacement: 'const context = require.context(\'./\', true, /'+target+'\\\.spec\\\.ts$/);'
}]
}
}
},
'exec': {
sleep: {
//The sleep command is needed here, else webpack compile fails since it seems like the files in the previous step were touched too recently
command: 'ping 127.0.0.1 -n 4 > nul',
stdout: true,
stderr: true
},
ng_test: {
command: 'ng test --config=temp.conf.js',
stdout: true,
stderr: true
}
}
});
// Load the plugin that provides the "uglify" task.
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-string-replace');
grunt.loadNpmTasks('grunt-exec');
// Default task(s).
grunt.registerTask('default', ['clean','copy','string-replace','exec']);
};