Я обновляю свой проект с угловых 5 до 6, я могу собрать проект и запустить все модульные тесты, но отчет о покрытии кода не включает покрытие для всех файлов.Мой проект разделен на 2 папки и 2 модуля app.module и модуль для моего приложения.На корневом уровне есть две папки dev и src.Папка Dev содержит main.ts и app.module, а папка src содержит все остальные компоненты.После запуска ng test --code-покрытие созданный отчет о покрытии показывает только покрытие для файлов внутри папки dev, отчет показывает покрытие для 3 файлов test.ts, polyfill.ts и app.component.ts, у меня есть другие компоненты /services / directives в папке src и соответствующих spec-файлах, тесты для этих spec-файлов выполняются, но для файлов в папке src не создается покрытие.
Это содержимое моего раздела тестирования файла angular.json
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "dev/test.ts",
"karmaConfig": "./karma.conf.js",
"polyfills": "dev/polyfills.ts",
"tsConfig": "dev/tsconfig.spec.json",
"scripts": [],
"styles": [
"dev/styles.scss"
],
"assets": [
"dev/assets"
]
}
},
Содержимое для test.ts
// Then we find all the tests.
const context1 = require.context('./', true, /\.spec\.ts$/);
const context = require.context('../src', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);
context1.keys().map(context1);
// Finally, start Karma to run the tests.
__karma__.start();
Содержимое файла package.json
"devDependencies": {
"@angular-devkit/build-angular": "~0.8.0",
"@angular/animations": "^6.1.9",
"@angular/cli": "^6.1.1",
"@angular/common": "^6.1.9",
"@angular/compiler": "^6.1.9",
"@angular/compiler-cli": "^6.1.9",
"@angular/core": "^6.1.9",
"@angular/forms": "^6.1.9",
"@angular/http": "^6.1.9",
"@angular/platform-browser": "^6.1.9",
"@angular/platform-browser-dynamic": "^6.1.9",
"@angular/router": "^6.1.9",
"@northstar/shared-module": "^5.0.5",
"@types/faker": "^4.1.4",
"@types/jasmine": "^2.8.8",
"@types/node": "^6.0.117",
"chai": "3.5.0",
"codelyzer": "^4.4.2",
"core-js": "^2.5.7",
"faker": "^4.1.0",
"htmlhint": "0.9.13",
"jasmine-core": "^2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^3.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-cli": "1.0.1",
"karma-coverage-istanbul-reporter": "^2.0.1",
"karma-istanbul-threshold": "1.2.2",
"karma-jasmine": "^1.1.2",
"karma-jasmine-html-reporter": "~0.2.2",
"karma-trx-reporter": "~0.2.9",
"ng-packagr": "^3.0.6",
"protractor": "^5.3.0",
"rimraf": "2.5.2",
"rxjs": "^6.3.3",
"stylelint": "~8.4.0",
"stylelint-order": "~0.6.0",
"ts-node": "^5.0.1",
"tsickle": "^0.32.1",
"tslint": "^5.11.0",
"typescript": "^2.9.2",
"web-animations-js": "~2.3.1",
"zone.js": "^0.8.19"
Karma.conf.js
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('karma-istanbul-threshold'),
require('karma-trx-reporter'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
mime: {
'text/x-typescript': ['ts', 'tsx']
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, 'coverage'), reports: ['html', 'lcovonly', 'text-summary', 'json'],
fixWebpackSourcePaths: true
},
istanbulThresholdReporter: {
src: 'coverage/coverage-final.json',
reporters: ['text'],
thresholds: {
global: {
statements: 80,
branches: 65,
functions: 80,
lines: 80,
},
// **********For later **********//
// each: {
// statements: 80,
// branches: 80,
// functions: 80,
// lines: 80,
// },
}
},
trxReporter: {
outputFile: 'test/test-results.trx',
shortTestName: false
},
reporters: config.angularCli && config.angularCli.codeCoverage
? ['progress', 'coverage-istanbul','trx', 'istanbul-threshold']
: ['progress', 'kjhtml','trx'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
browserDisconnectTolerance: 2,
browserNoActivityTimeout: 95000,
browserDisconnectTimeout: 30000,
captureTimeout: 60000
});