Comment utilisez-vous d'Istanbul de Couverture de Code avec transpiled Tapuscrit?
J'ai lu des articles sur ce toute la matinée à essayer d'obtenir mon environnement de l'installation correctement. Mais pour une raison que je ne suis pas à l'obtenir. Mon setup-
/app
... source (mixed js and ts)
/scripts
... copied source (js)
typescripts.js //transpiled typescript with inline mapping
Tests de fonctionner correctement, et avec la cartographie de débogage dans le chrome débogueur est mappé correctement. Mais Istanbul voit le typescripts.js
fichier comme un fichier, au lieu de la concaténation de plusieurs dizaines d'autres fichiers.
Pour générer le fichier d'enregistrement de la source, je suis en utilisant gulp-typescript
. La source (à l'exclusion des tests) sont transpiled à ladite typescripts.js
, et les tests sont transpiled individuellement et copié à /scripts
.
var ts = require('gulp-typescript');
var sourcemaps = require('gulp-sourcemaps');
var concat = require('gulp-concat');
module.exports = function (gulp, config) {
'use strict';
//Runs dot ts files found in `www` through the typescript compiler and copies them as js
//files to the scripts directory
gulp.task('typescript', ['typescript:tests'], function () {
return gulp.src(config.paths.typescript) //[ './www/app/**/*.ts', '!./www/app/**/*.test.ts', '!./www/app/**/*.mock.ts' ]
.pipe(sourcemaps.init())
.pipe(ts(ts.createProject(config.paths.tsConfig))) //'./tsconfig.json'
.js
.pipe(concat(config.sourcemaps.dest)) //typescripts.js
.pipe(sourcemaps.write(config.sourcemaps)) //{ includeContent: false, sourceRoot: '/app' } - i've also tried absolute local path
.pipe(gulp.dest(config.paths.tmpScripts)); //./www/scripts
});
gulp.task('typescript:tests', [], function() {
return gulp.src(config.paths.typescriptTests) //[ './www/app/**/*.test.ts', './www/app/**/*.mock.ts' ]
.pipe(ts(ts.createProject(config.paths.tsConfig))) //'./tsconfig.json'
.pipe(gulp.dest(config.paths.tmpScripts)); //./www/scripts
});
};
L'résultant typescripts.js
a la ligne sourcemap. Avec le sourcemap, la douzaine de fichiers ts résultats dans 106ko.
Donc, à partir d'ici, les tests et le débogage fonctionne très bien.
Maintenant dans une tentative pour obtenir Istanbul de couverture de code fonctionne correctement, je l'ai installé karma-sourcemap-loader
et de l'ajouter à la préprocesseurs.
preprocessors: {
'www/scripts/typescripts.js': ['sourcemap'],
'www/scripts/**/*.js': ['coverage']
},
J'avais pense que c'est ce que j'avais besoin de le faire. Mais il ne montre pas de couverture de code dans les fichiers source. J'ai essayé le chemin absolu de C:/
mais cela ne fonctionne pas non plus. J'ai aussi essayé les différentes options dans gulp-sourcemaps
comme l'ajout de la source (qui a poussé le fichier de 160 ko), mais pas de soit.
Quelqu'un a eu cela fonctionne? Toutes les idées que j'ai pu faire de mal?
Vous devez vous connecter pour publier un commentaire.
TL;DR: Il existe un outil: https://github.com/SitePen/remap-istanbul décrit comme Un outil de reconfiguration Istanbul via carte Source
La l'article sur Sitepan décrit plus en détail:
Comment utiliser l'outil avec gulp: https://github.com/SitePen/remap-istanbul#gulp-plugin
Si vous voulez la source appui de carte de Istanbul, vous pouvez utiliser la 1.0 version alpha comme la version actuelle ne pas source de soutien des cartes. Je l'ai configuré à l'aide de
ts-node
dans http://github.com/typings/typings (voir https://github.com/typings/typings/blob/bff1abad91dabec1cd8a744e0dd3f54b613830b5/package.json#L19) et le code source est cartographié. Il ressemble beaucoup et est agréable d'avoir de mes tests et de couverture de code tous en cours d'exécution de processus à zéro transpilation. Bien sûr, vous pouvez utiliser Istanbul 1.0 avec le transpiled JavaScript.Pour la mise en oeuvre navigateur que vous utilisez, il faudrait que je vois plus de code de ce que vous faites pour voir ce vais un peu travailler pour vous, mais essayez de le
1.0.0-alpha.2
et voir ce qui se passe.master
. Si vous êtes après les derniers tests, vous pouvez regarder les github.com/typings/core. Par exemple, github.com/typings/typings/blob/....Comme blakeembrey mentionné. Istanbul 1.x le gère bien.
Ci-dessous un exemple de pure mnp script qui le fait avec le Jasmin.
Voir https://github.com/Izhaki/Typescript-Jasmine-Istanbul-Boilerplate.
paquet.json (la stuff)
Sortie
SyntaxError: missing ) after argument list
.Ce qui est des pensions de travaux. J'ai couru le repo et peut voir les tests en cours d'exécution. En mode Html est généré.
https://github.com/Izhaki/Typescript-Jasmine-Istanbul-Boilerplate
Aucun des exemples fournis travaillé pour mon Node.JS projet (écrit en caractères d'imprimerie). Je voulais exécuter des tests unitaires dans le Jasmin, et couverts par Istanbul.
J'ai fini de travailler avec le suivant.
paquet.json:
de jasmin.json
.d'istanbul.yml
tsconfig-test.json