我该如何解决Angular单元测试错误:“在afterAll中抛出了错误\n [object ErrorEvent] thrown”?

11

当我在我的Angular项目中运行 ng test 命令时,会出现错误,它会显示以下错误

10% building modules 1/1 modules 0 active04 12 2018 11:29:43.408:WARN [karma]: No captured browser, open http://localhost:9876/
04 12 2018 11:29:43.414:INFO [karma]: Karma v2.0.0 server started at http://0.0.0.0:9876/
04 12 2018 11:29:43.414:INFO [launcher]: Launching browser Chrome with unlimited concurrency
04 12 2018 11:29:43.418:INFO [launcher]: Starting browser Chrome
04 12 2018 11:29:53.540:WARN [karma]: No captured browser, open http://localhost:9876/    
04 12 2018 11:29:53.777:INFO [Chrome 70.0.3538 (Mac OS X 10.14.1)]: Connected on socket SKF3rI13kIK0WCqqAAAA with id 32081204
Chrome 70.0.3538 (Mac OS X 10.14.1): Executed 95 of 191 SUCCESS (0 secs / 0.131 secs)
Chrome 70.0.3538 (Mac OS X 10.14.1) ERROR
  {
    "message": "An error was thrown in afterAll\n[object ErrorEvent] thrown",
    "str": "An error was thrown in afterAll\n[object ErrorEvent] thrown"
  }
Chrome 70.0.3538 (Mac OS X 10.14.1): Executed 96 of 191 ERROR (0 secs / 0.826 secs)
Chrome 70.0.3538 (Mac OS X 10.14.1) ERROR
  {
    "message": "An error was thrown in afterAll\n[object ErrorEvent] thrown",
    "str": "An error was thrown in afterAll\n[object ErrorEvent] thrown"
Chrome 70.0.3538 (Mac OS X 10.14.1): Executed 96 of 191 ERROR (1.386 secs / 0.826 secs)
那是业力的结果,每一个测试都通过了。Karma test result, click 我的package.json内容。
"devDependencies": {
    "@angular/cli": "~1.7.0",
    "@angular/compiler-cli": "^5.2.0",
    "@angular/language-service": "^5.2.0",
    "@types/jasmine": "~2.8.3",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "^4.0.1",
    "jasmine-core": "~2.8.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~2.0.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~4.1.0",
    "tslint": "~5.9.1",
    "typescript": "~2.5.3"
  },

谢谢。


你的 afterAll() 方法中有什么内容?(如果有的话) - rrd
我没有使用afterAll()方法。 - Samet ÇELİKBIÇAK
2个回答

25

我找到了解决方法,在我的情况下是用

  afterAll(() => {
    TestBed.resetTestingModule();
  });

使用该方法,所有的错误都会消失,以下是示例代码

describe('Component', () => {

  let component: Component;

  beforeEach((() => {

    TestBed.configureTestingModule({
      declarations: [Component]
    })
      .compileComponents();
  }));

  beforeEach(() => {
    const fixture = TestBed.createComponent(Component);
    component = fixture.componentInstance;
  });

  it('should have a defined component', () => {
    expect(component).toBeDefined();
  });

  afterAll(() => {
    TestBed.resetTestingModule();
  });

});

2
根据您在问题中的截图,总共有195个测试需要执行。那么,在您的应用程序中,您是否在每个单元测试文件(xx.spec.ts)中都放置了afterAll方法? - Kaashan
是的,我已经使用afterAll()更改了所有测试文件。 - Samet ÇELİKBIÇAK

9
afterEach(() => {
    TestBed.resetTestingModule();
});

这对我来说解决了错误。

我也是的,对于我来说也是这样。 - d2207

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接