升级到Karma 2.0.0后,ng测试无法正常工作

时间:2018-02-01 12:06:54

标签: angular unit-testing testing karma-runner

昨天我将Angular从v4.4升级到v5.2,将Karma从v1.7.1升级到v2.0.0。由于这样做,我无法运行 ng test

我可以使用 karma start myconfigfile.js --single-run 运行测试并且它们都正确传递,但是当我尝试 ng test 时,浏览器会打开但是在显示“Karma”之后就会挂起 - 开始#39;没有控制台输出。

我已经为浏览器尝试了Chrome和ChromeHeadless但是已经没有想法了。任何帮助将不胜感激。

配置:

module.exports = function (config) {
    config.set({
        basePath: '',
        frameworks: ['jasmine', '@angular/cli'],
        plugins: [
            require('karma-jasmine'),
            require('karma-chrome-launcher'),
            require('karma-coverage-istanbul-reporter'),
            require('karma-jasmine-html-reporter'),
            require('karma-spec-reporter'),
            require('karma-junit-reporter'),
            require('@angular/cli/plugins/karma')
        ],
        client: {
            clearContext: false // leave Jasmine Spec Runner output visible in browser
        },
        files: [
            { pattern: './src/test.ts', watched: false }
        ],
        preprocessors: {
            './src/test.ts': ['@angular/cli']
        },
        mime: {
            'text/x-typescript': ['ts', 'tsx']
        },
        coverageIstanbulReporter: {
            reports: ['html', 'lcovonly', 'cobertura'],
            fixWebpackSourcePaths: true,
            'report-config': {
                cobertura: {
                    file: 'coverage.xml'
                }
            }
        },
        angularCli: {
            environment: 'dev'
        },
        reporters: ['spec', 'kjhtml', 'junit', 'coverage-istanbul'],
        junitReporter: {
            outputDir: '',
            outputFile: 'test-results.xml',
            useBrowserName: false
        },
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: false,
        browsers: ['ChromeHeadless'],
        singleRun: true,
        browserNoActivityTimeout: 60000,
        browserDisconnectTolerance: 5
    });
};

2 个答案:

答案 0 :(得分:1)

对于将来遇到这种情况的任何人来说,它看起来像是一个依赖性问题。 npm安装将其整理出来。

答案 1 :(得分:0)

我一直在Windows 10机器上使用 angular 5,karma 2.0.0,karma-chrome-launcher 2.2.0 进行同样的操作,整天都在浪费时间来弄清楚为什么chrome没有捕获。

你必须制作自定义镀铬标题,尽管文档只说明了 浏览器:['ChromeHeadless'] 可以正常工作但不起作用。

请按照以下方式制作自定义标题:

    customLaunchers: {
        ChromeHeadlessCustom: {
            base: 'ChromeHeadless', // browser
            flags: [
                '--no-sandbox', // needed to run test  case in windows also
            ],
        },
    }

然后在浏览器标记中提供自定义标题引用:



    browsers: ['ChromeHeadlessCustom']

此后它的工作就像魅力一样。 :)