当我运行测试套件时,我在与所从事的单元测试完全不同的单元测试中出错。我在做什么错了?
HeadlessChrome 0.0.0 (Linux 0.0.0) ERROR
{
"isTrusted": true
}
然后执行一些构建步骤,并在测试执行过程中出现以下错误:
HeadlessChrome 0.0.0 (Linux 0.0.0) ERROR
An error was thrown in afterAll
[object ErrorEvent] thrown
如果我注释掉某些测试,例如在类A中,则另一个测试在组件B中失败。如果我注释掉这些,则另一个测试在组件C中失败。这些测试最近没有更新,因此都没有更新应该失败了。
我在this question中看到有人将这个问题归因于node_modules文件夹。但是,我昨天才重新安装了node_modules文件夹,从而缓解了类似的问题。这是常见的错误吗? 开发人员不能总是删除并重新安装node_modules文件夹。我肯定做错了什么,但我所做的只是像往常一样进行单元测试。
如何调试和修复此Headless Chrome错误,以便重新进行单元测试?
以下是有关我的环境的一些统计信息:
相关依赖版本:
"@angular/cli": "6.0.8",
"@angular/compiler-cli": "6.0.6",
"@angular/language-service": "6.0.6",
"@types/jasmine": "~2.5.53",
"@types/jasminewd2": "~2.0.2",
"@types/node": "~6.0.60",
"codelyzer": "^4.0.1",
"jasmine-core": "~2.6.2",
"jasmine-spec-reporter": "~4.1.0",
"karma": "~1.7.0",
"karma-chrome-launcher": "~2.1.1",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^1.2.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"ng-diff-match-patch": "^2.0.6",
"protractor": "~5.1.2",
"ts-node": "~3.2.0",
"tslint": "~5.7.0",
"typescript": "2.7.2",
"@angular-devkit/build-angular": "~0.6.8"
相关的Karma.conf设置:
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['ChromeHeadless'],
singleRun: false,
customLaunchers: {
ChromeHeadless: {
base: 'Chrome',
flags: [
'--headless',
// '--disable-gpu',
'--no-sandbox',
// Without a remote debugging port, Google Chrome exits immediately.
'--remote-debugging-port=9222',
],
}
},
browserDisconnectTolerance: 8,
browserNoActivityTimeout: 60000,
browserDisconnectTimeout: 20000,
答案 0 :(得分:1)
事实上,我确实通过删除node_modules文件夹并重新安装它以及回滚了两次提交的单元测试来解决了这个问题。我仍然不确定是什么原因导致此问题,或者为什么卸载并重新安装node_modules文件夹会起作用。但这确实有效。
编辑:我还注意到当我有两个描述相同的单元测试时,再次出现此错误。同样,我不确定这是否是唯一原因,但是更改单元测试描述似乎也已经解决了。我希望该错误更具描述性。
进一步编辑:问题仍然经常发生,答案中没有列出任何问题。