javascript - 如何指定我想要包含 Angular 代码覆盖率文件的文件夹?

标签 javascript angular jasmine karma-jasmine istanbul

我正在使用 jasmine 和 karma 进行单元测试。 Istanbul 尔记者。

我想指定哪个文件夹被考虑用于代码覆盖。 我想排除其他一切。

现在我完全不知道配置是如何工作的。 core 文件夹是我想要考虑代码覆盖率的唯一文件夹。 (必须粘贴屏幕截图,因为防火墙不允许我上传图像)

enter image description here

karma 配置:

module.exports = function (config) {
  config.set({
    basePath: '',
    files:['mockData.js', 'mockLocalization.js'],
    frameworks: ['jasmine', '@angular/cli'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      //require('karma-phantomjs-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('@angular/cli/plugins/karma'),
      require('karma-scss-preprocessor'),
       require('karma-sonarqube-reporter'),
       require('karma-junit-reporter'),

    ],
    client:{
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    angularCli: {
      environment: 'dev'
    },
    coverageIstanbulReporter: {

      reports: [ 'html', 'lcov', 'cobertura' ],
      fixWebpackSourcePaths: true,

    },

    junitReporter:{
      useBrowserName: false, 
      outputDir: 'report',
      // will be resolved to basePath (in the same way as files/exclude patterns)
      outputFile: 'karma-report.xml'
    },

    coverageReporter: {
      includeAllSources: false,
      dir: 'coverage',

      reporters: [
        { type: 'html', subdir: 'html' }
      ]
    },

    reporters: ['progress', 'kjhtml','coverage-istanbul'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],    //make sure it is chromeHeadless while running the pipeline otherwise it will fail.
    singleRun: true,
    browserDisconnectTimeout: 20000,
    browserDisconnectTolerance: 3,
    browserNoActivityTimeout: 120000,
    flags: [
      '--disable-web-security',
      '--disable-gpu',
      '--no-sandbox'
    ]
  });
};

记者:

enter image description here

编辑:

const context = require.context('./core', true, /\.spec\.ts$/);
context.keys().map(context);

enter image description here 看起来不错!

但是

const context = require.context('./core', true, /\.spec\.ts$/);
context.keys().map(context);
const context2 = require.context('./modules', true, /\.spec\.ts$/);
context2.keys().map(context2);

给予:

enter image description here 为什么它突然包含 Assets 文件夹?

最佳答案

在 src 文件夹中配置 test.js 以仅指向要运行测试的文件夹

// Then we find all the tests.
const context = require.context('./app/folderyouwantoruntestcas', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

关于javascript - 如何指定我想要包含 Angular 代码覆盖率文件的文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56952573/

相关文章:

javascript - 如何从我的 Django 网站向不同的服务器发出 POST 请求?

javascript - 无法在 routerOnActivate 上获取查询参数

javascript - Click() 和 then() 不起作用 - Protractor

javascript - 将 $timeout 与 Jasmine 的模拟时钟一起使用的单元测试 Angular 服务

Javascript 仅在放置在 HTML 下方时才起作用

javascript - 这是哪个模板lang `<?js`

javascript - 使用ajax发送$_POST变量到php

angular - 在 Angular 中调用具有依赖关系的函数

json - "Unexpected token in JSON at position 0"?

javascript - Angular 7 Jasmine单元测试: how to get component NativeElement?