Неполное покрытие кода после обновления с Angular 5 до Angular 6 - PullRequest
0 голосов
/ 30 сентября 2018

Я обновляю свой проект с угловых 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
});
...