我有以下问题:当我使用Karma为我的角度项目运行单元/集成测试时,我的测试成功/失败的几率是50:50。它主要在我的maschine (:D)上工作,但在我们的构建服务器上不起作用,这使得它完全不可靠。
当它失败时,它总是一条神秘的错误消息,上面写着
脚本错误.
...nothing更多。现在奇怪的是,它总是另一个测试失败。
这里是我已经做过或看过的东西:
--这是我的依赖关系:
"dependencies": {
"@angular/animations": "^6.0.9",
"@angular/cdk": "^6.4.0",
"@angular/common": "^6.0.9",
"@angular/compiler": "^6.0.9",
"@angular/core": "^6.0.9",
"@angular/flex-layout": "^6.0.0-beta.16",
"@angular/forms": "^6.0.9",
"@angular/http": "^6.0.9",
"@angular/material": "^6.4.0",
"@angular/platform-browser": "^6.0.9",
"@angular/platform-browser-dynamic": "^6.0.9",
"@angular/platform-server": "^6.0.9",
"@angular/router": "^6.0.9",
"@ngrx/effects": "^6.0.1",
"@ngrx/router-store": "^6.0.1",
"@ngrx/store": "^6.0.1",
"@ngrx/store-devtools": "^6.0.1",
"core-js": "^2.5.7",
"devextreme": "^18.1.4",
"devextreme-angular": "^18.1.4",
"i": "^0.3.6",
"jquery": "^3.3.1",
"ngx-scrollbar": "^2.1.0",
"node-sass": "^4.9.0",
"npm": "^6.2.0",
"rxjs": "^6.2.2",
"stream": "0.0.2",
"web-animations-js": "^2.3.1",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.6.3",
"@angular/cli": "^6.0.8",
"@angular/compiler-cli": "^6.0.9",
"@angular/language-service": "^6.0.9",
"@types/jasmine": "^2.8.8",
"@types/jasminewd2": "^2.0.3",
"@types/node": "^10.5.2",
"codelyzer": "^4.4.2",
"fs-extra": "^6.0.1",
"git-describe": "^4.0.3",
"gulp": "^4.0.0",
"gulp-param": "^1.0.3",
"gulp-run": "^1.7.1",
"hogan.js": "^3.0.2",
"husky": "^0.14.3",
"jasmine-core": "^3.1.0",
"jasmine-spec-reporter": "^4.2.1",
"jszip": "^3.1.5",
"karma": "^2.0.4",
"karma-chrome-launcher": "~2.2.0",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^2.0.1",
"karma-jasmine": "^1.1.2",
"karma-jasmine-html-reporter": "^1.2.0",
"license-checker": "^20.1.0",
"lint-staged": "^7.2.0",
"markdown-include": "^0.4.3",
"prettier": "^1.13.7",
"protractor": "^5.3.2",
"readline-sync": "^1.4.9",
"run-sequence": "^2.2.1",
"stylelint": "^9.3.0",
"stylelint-config-recommended-scss": "^3.2.0",
"stylelint-config-standard": "^18.2.0",
"stylelint-scss": "^3.1.3",
"ts-node": "^6.2.0",
"tslint": "^5.11.0",
"tslint-config-prettier": "^1.13.0",
"typescript": "2.7.2",
"yargs": "^11.1.0"
}接下来我该怎么办??
我很感激每一个hint...thanks
发布于 2018-07-23 11:31:02
我终于解决了的问题。
不知何故,我走上了正确的轨道,找出了哪些测试失败了,或者更确切地说,是导致其他测试失败。
// causing part in the tests
beforeEach(() => {
fixture = TestBed.createComponent(FilterSidebarComponent);
component = fixture.componentInstance;
component.data = {} as DataClass;
fixture.detectChanges();
});现在的问题是,在组件中的订阅中,我调用类DataClass的特定方法。
this.attributeXY.subscribe(event => {
this.data.reset(); <-- reset() was undefined
if (event) {
// do something
...
}
})现在剩下的问题是,为什么空对象的强制转换在这种情况下不起作用?我的期望是,方法reset()也会被推断出来。
发布于 2018-07-23 08:57:08
根据我的经验,很多时候这样的随机错误是由于一种肮脏的状态--一种遗留下来的测试--反过来又失败了其他一些测试。AFAIK Karma的默认顺序并不是预期的或定义的。我会尝试注释掉测试的前半部分(二进制搜索风格),看看它是否一致通过。
https://stackoverflow.com/questions/51416695
复制相似问题