Angular5-业力/茉莉花测试无法添加其他测试

时间:2019-02-04 16:25:12

标签: angular karma-jasmine

我的项目中有很多测试可以正常运行,但是一旦我在文件中添加了一个测试,它就会开始崩溃,而没有提供有关该问题的大量信息。 错误显示如下:

{
"message": "An error was thrown in afterAll\nExpected false to be truthy.\n    
at http://localhost:9876/_karma_webpack_/webpack:/src/app/views/transfer-order-balance/transfer-order-balance/transfer-order-balance.component.spec.ts:292:47\n    
at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:391:1)\n    
at ProxyZoneSpec.webpackJsonp../node_modules/zone.js/dist/proxy.js.ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/proxy.js:129:1)\n    
at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:390:1)\nExpected false to be truthy.\n    
at http://localhost:9876/_karma_webpack_/webpack:/src/app/views/transfer-order-balance/transfer-order-balance/transfer-order-balance.component.spec.ts:292:47\n    
at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:391:1)\n    
at ProxyZoneSpec.webpackJsonp../node_modules/zone.js/dist/proxy.js.ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/proxy.js:129:1)\n    
at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:390:1)\nExpected true to be falsy.\n    
at http://localhost:9876/_karma_webpack_/webpack:/src/app/views/transfer-order-balance/transfer-order-balance/transfer-order-balance.component.spec.ts:291:73\n    
at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:391:1)\n    
at ProxyZoneSpec.webpackJsonp../node_modules/zone.js/dist/proxy.js.ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/proxy.js:129:1)\n    
at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:390:1)\nExpected false to be truthy.\n    
at http://localhost:9876/_karma_webpack_/webpack:/src/app/views/transfer-order-balance/transfer-order-balance/transfer-order-balance.component.spec.ts:292:47\n    
at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:391:1)\n    
at ProxyZoneSpec.webpackJsonp../node_modules/zone.js/dist/proxy.js.ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/proxy.js:129:1)\n    
at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:390:1)"

我的测试如下:

it('should display provided error message', () => {
component.message = 'Error message sent from other component';
fixture.detectChanges();
const errorElement: HTMLElement = fixture.nativeElement;
const errorMessage = errorElement.querySelector('p');
expect(errorMessage.textContent).toContain(component.message);
});

如果我再次用不同的消息添加相似的测试,则它无法在PhantomJS上执行,但在Chrome上可以正常运行。

我的package.json如下所示

 {
  "name": "@coreuipro/angular",
  "version": "1.0.8",
  "description": "Bootstrap 4 Admin Template",
  "author": "Łukasz Holeczek",
  "homepage": "http://coreui.io/pro/",
  "copyright": "Copyright 2017 creativeLabs Łukasz Holeczek",
  "license": "http://coreui.io/pro/license/",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@agm/core": "1.0.0-beta.2",
    "@angular/animations": "5.2.0",
    "@angular/common": "5.2.0",
    "@angular/compiler": "5.2.0",
    "@angular/core": "5.2.0",
    "@angular/forms": "5.2.0",
    "@angular/http": "5.2.0",
    "@angular/platform-browser": "5.2.0",
    "@angular/platform-browser-dynamic": "5.2.0",
    "@angular/router": "5.2.0",
    "@angular/upgrade": "5.2.0",
    "angular-calendar": "0.23.2",
    "angular-webstorage-service": "^1.0.2",
    "angular2-datatable": "0.6.0",
    "angular2-ladda": "1.2.3",
    "angular2-text-mask": "8.0.4",
    "angular2-toaster": "4.0.1",
    "bootstrap": "4.0.0-beta.3",
    "brace": "0.11.0",
    "chart.js": "2.7.1",
    "codemirror": "5.33.0",
    "core-js": "2.5.3",
    "dragula": "3.7.2",
    "flag-icon-css": "2.9.0",
    "font-awesome": "^4.7.0",
    "keycloak-angular": "^1.2.5",
    "keycloak-js": "^3.4.3",
    "lodash": "^4.17.5",
    "moment": "2.20.1",
    "ng-multiselect-dropdown": "^0.1.6",
    "ng-select": "1.0.0-rc.3",
    "ng2-ace-editor": "0.3.4",
    "ng2-charts": "1.6.0",
    "ng2-dragula": "1.5.0",
    "ngx-bootstrap": "2.0.0-rc.0",
    "ngx-pagination": "^3.1.1",
    "ngx-quill": "2.0.4",
    "rxjs": "5.5.6",
    "simple-line-icons": "^2.4.1",
    "spinkit": "1.2.5",
    "ts-helpers": "1.1.2",
    "zone.js": "^0.8.29"
  },
  "devDependencies": {
    "@angular/cli": "1.7.3",
    "@angular/compiler-cli": "5.2.0",
    "@angular/language-service": "5.2.0",
    "@types/jasmine": "2.8.3",
    "@types/jasminewd2": "2.0.3",
    "@types/node": "9.3.0",
    "codelyzer": "4.0.2",
    "jasmine-core": "^2.99.1",
    "jasmine-spec-reporter": "4.2.1",
    "karma": "2.0.0",
    "karma-chrome-launcher": "2.2.0",
    "karma-cli": "1.0.1",
    "karma-coverage-istanbul-reporter": "1.3.3",
    "karma-jasmine": "1.1.1",
    "karma-jasmine-html-reporter": "0.2.2",
    "karma-phantomjs-launcher": "^1.0.4",
    "phantomjs-prebuilt": "^2.1.16",
    "protractor": "5.2.2",
    "ts-node": "4.1.0",
    "tslint": "5.9.1",
    "typescript": "2.5.3"
  }
}

1 个答案:

答案 0 :(得分:2)

在您的测试异步运行但位于异步区域之外的情况下,我已经看到类似的问题。它们并非总是会始终失败,这会使它们非常难以调试。我建议查看可能异步运行的任何测试,并确保已正确设置它们以处理该问题。