conseguir que el informe de cobertura de Nueva York / Estambul funcione con mecanografiado
Estoy luchando por obtener una cobertura adecuada con nyc / istanbul para mi proyecto mecanografiado / mocha / gulp. He intentado varios enfoques, algunos de ellos parecen ser incapaces de usar mapas de origen y otros fallan debido ats-node
/tsc
errores Mi configuración actual es:
nyc
configuración relevante enpackage.json
"scripts": {
"test:coverage": "nyc npm run test:unit",
"test:unit": "gulp mocha"
}
"nyc": {
"check-coverage": true,
"all": true,
"extension": [
".js",
".jsx",
".ts",
".tsx"
],
"include": [
"src/**/!(*.test.*).[tj]s?(x)"
],
"reporter": [
"html",
"lcov",
"text",
"text-summary"
],
"report-dir": "docs/reports/coverage"
}
gulpfile.js
mocha
parte relevante
const SRC_DIR = path.join(__dirname, 'src');
const SRC_FILES = path.join(SRC_DIR, '**', '*.[jt]s?(x)');
const TEST_FILES = path.join(SRC_DIR, '**', '*.test.[jt]s?(x)');
const MOCHA_CONFIG = {
src: [
TEST_FILES
],
watchSrc: [
SRC_FILES,
TEST_FILES
],
mocha: {
// compilers: [
// 'ts:ts-node/register',
// 'tsx:ts-node/register'
// ],
require: [
'./tests/setup.js',
'ignore-styles',
'source-map-support/register'
]
}
};
gulp.task('mocha', mocha(MOCHA_CONFIG));
tsconfig.json
{
"compilerOptions": {
"baseUrl": "./",
"rootDir": "./src",
"outDir": "./build",
"allowJs": true,
"module": "commonjs",
"target": "es5",
"lib": ["es5", "es6", "dom"],
"sourceMap": true,
"inlineSourceMap": false,
"inlineSources": false,
"experimentalDecorators": true,
"noUnusedParameters": true,
"noUnusedLocals": true,
"jsx": "react",
"moduleResolution": "node"
},
"exclude": [
"docs",
"tests",
"**/*.test.js",
"**/*.test.jsx",
"**/*.test.ts",
"**/*.test.tsx",
"tools",
"gulpfile.js",
"node_modules",
"build",
"typings/main",
"typings/main.d.ts"
],
"awesomeTypescriptLoaderOptions": {
"useCache": true,
"useBabel": true
}
}
Con la configuración anterior, la cobertura produce resultados para todos los archivos, pero son incorrectos para los archivos TS, probablemente debido a que los mapas de origen no se utilizan (es decir, el informe no muestra cobertura para las líneas que son comentarios y los números también parecen estar equivocados).
Con una serie de enfoques variados probados sin éxito, uno de los más comúnmente sugeridos es agregar"require": ["ts-node/register"]
anyc
configuración todavía, entonces recibo errores quejándome, es decirgulpfile.js
, docs/reports/coverage/lcov-report/prettify.js
y número de otros archivos JS para sernot under 'rootDir'
lo cual es correcto pero no está claro por quéts-node
intenta procesar todos los archivos desrc
incluso si están excluidos entsconfig.json
(Todavía la configuración se vuelve realmente compleja).
Agradecería cualquier sugerencia sobre qué camino tomar para obtener un informe de cobertura adecuado para los archivos TS.