9

当我进行 Angular 4 单元测试时,其中一个使用谷歌地图和 agm 包的页面显示了一个错误:

An error was thrown in afterAll\n[object ErrorEvent] thrown

有谁知道问题可能是什么?

控制台截图

4

3 回答 3

5

我也在寻找这个问题的解决方案,发现如果我像往常一样通过终端运行我的测试(ng test),然后在 Karma runner Chrome 窗口中单击调试,然后打开我的开发控制台,我可以看到真正的输出错误。

我看到了使用附加标志运行单元测试的建议;这对我不起作用,但可能值得一试:

  • CLI v6.x --sourceMap=false
  • CLI v1.x --sourcemaps=false

来源:https ://stackoverflow.com/a/46840229

在我的例子中,我正在模拟一个第三方包类,我忘记在我的单元测试中模拟模拟类中的一个函数调用;它抛出了一个没有冒泡到终端的错误。

很抱歉,这本身并不能解决错误,但也许它会让您更接近调试问题的症结并找到解决方案,就像它为我所做的那样。

于 2018-07-03T11:04:20.160 回答
5

对我来说,交换这个:

beforeEach(async(() => { //...

为了这:

beforeEach(() => { //...

在显然失败的测试之前运行的测试中,帮助我确定了真正的罪魁祸首。

详细信息:对于在整个套件中失败但在单独运行时通过的测试,我收到此错误。事实证明,这是一个较早的测试,它正在异步运行,实际上失败了。

(该测试有一个代码中有错误的模板,在这个 Stack Overflow 答案的帮助下解决了。)

于 2019-02-01T20:25:33.710 回答
5

就我自己而言,下面的代码片段解决了我的问题。

  afterEach(() => {
    fixture.destroy();
    TestBed.resetTestingModule();
  });
于 2020-07-07T10:24:57.157 回答