作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在运行我的单元测试时,有时,即使它们通过了,在所有测试运行结束时,我也会收到以下错误。
在运行 PhantomJS 的 Jenkins CI 构建中:
.PhantomJS 2.1.1 (Linux 0.0.0) ERROR
{
"message": "An error was thrown in afterAll\nReferenceError: Can't find variable: $ thrown",
"str": "An error was thrown in afterAll\nReferenceError: Can't find variable: $ thrown"
}
或者在 Chrome 上:
Chrome 67.0.3396 (Windows 7 0.0.0) ERROR
{
"message": "An error was thrown in afterAll\n[object ErrorEvent] thrown",
"str": "An error was thrown in afterAll\n[object ErrorEvent] thrown"
}
我也有非常不可靠的测试,如果不做任何更改,有时它们会成功,而有时相同的测试会失败,所以我知道发生了一些奇怪的事情。
最佳答案
我的问题是,由于设置测试的方式非常愚蠢,我在测试中遇到了竞争条件,但我还是想在这里记录下来,因为我很难在互联网上找到我的问题的答案。
我不知何故所做的是声明两个 beforeEach
函数来设置我的测试,其中两个函数是异步的,所以我有一个竞争条件,有时它们会乱序运行并失败。
这是我的测试结果:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ HomeComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(HomeComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
因此,为了解决这个问题,我将所有设置整合到一个同步 beforeEach 中。
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [HomeComponent]
}).compileComponents();
fixture = TestBed.createComponent(HomeComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
我浪费了太多时间试图解决这个问题,所以我把它放在这里是为了救别人。
关于Angular 6 单元测试 : An error was thrown in afterAll\nReferenceError: Can't find variable: $ thrown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51543241/
在运行我的单元测试时,有时,即使它们通过了,在所有测试运行结束时,我也会收到以下错误。 在运行 PhantomJS 的 Jenkins CI 构建中: .PhantomJS 2.1.1 (Linux
我是一名优秀的程序员,十分优秀!