Angular8单元测试茉莉花超时问题
Angular8 unit testing jasmine timeout issue
运行 使用此失败模式进入随机单元测试失败
错误:超时 - 未在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内调用异步回调。
其中一些失败的测试甚至没有进行异步测试!
想知道这段代码是否正确;这是我们在 Angular
的所有测试中全面使用的模式
beforeEach(async(() => {
TestBed.configureTestingModule({ . // Should this be **return TestBed.configureTestingModule**
imports: [
...CommonTestModules
],
declarations: [FooComponent]
})
.compileComponents();
}));
compileComponents 的承诺是否应该从回调中return编辑?我在某处读到,异步包装器正在等待承诺,当承诺得到解决时,异步包装器最终会调用 done() 。但是这里的模式看起来没有 return 承诺,我们也没有在任何地方调用 "await" 关键字。如果没有 return 语句,此代码是否显示错误?
不return那个承诺也没关系,the async
function takes care of waiting for all promises created inside of the beforeEach
. You can see that pattern throughout the Angular Testing docs:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ BannerComponent ],
})
.compileComponents(); // compile template and css
}));
您的 IDE 可能会像 WebStorm 那样抱怨,因为它不知道 Angular 的 async
函数的语义(注意这与 async
来自 JavaScript 的关键字,这个是在 Angular
中声明的函数
关于您最初的错误,请尝试隔离一个失败的测试,或者添加一个有时无法查看我们是否发现任何奇怪的测试的示例。
你不需要它是异步的,你可以简单地删除异步功能并使用 createComponent(your_component)
而不是 compileComponents()
来同步(无论如何你都在等待它的解决)。我可以确认这有效:
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ BannerComponent ],
});
fixture = TestBed.createComponent(BannerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
希望对您有所帮助
运行 使用此失败模式进入随机单元测试失败
错误:超时 - 未在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内调用异步回调。
其中一些失败的测试甚至没有进行异步测试!
想知道这段代码是否正确;这是我们在 Angular
的所有测试中全面使用的模式beforeEach(async(() => {
TestBed.configureTestingModule({ . // Should this be **return TestBed.configureTestingModule**
imports: [
...CommonTestModules
],
declarations: [FooComponent]
})
.compileComponents();
}));
compileComponents 的承诺是否应该从回调中return编辑?我在某处读到,异步包装器正在等待承诺,当承诺得到解决时,异步包装器最终会调用 done() 。但是这里的模式看起来没有 return 承诺,我们也没有在任何地方调用 "await" 关键字。如果没有 return 语句,此代码是否显示错误?
不return那个承诺也没关系,the async
function takes care of waiting for all promises created inside of the beforeEach
. You can see that pattern throughout the Angular Testing docs:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ BannerComponent ],
})
.compileComponents(); // compile template and css
}));
您的 IDE 可能会像 WebStorm 那样抱怨,因为它不知道 Angular 的 async
函数的语义(注意这与 async
来自 JavaScript 的关键字,这个是在 Angular
关于您最初的错误,请尝试隔离一个失败的测试,或者添加一个有时无法查看我们是否发现任何奇怪的测试的示例。
你不需要它是异步的,你可以简单地删除异步功能并使用 createComponent(your_component)
而不是 compileComponents()
来同步(无论如何你都在等待它的解决)。我可以确认这有效:
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ BannerComponent ],
});
fixture = TestBed.createComponent(BannerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
希望对您有所帮助