昨天我将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
});
};
答案 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']
此后它的工作就像魅力一样。 :)