【发布时间】:2020-09-12 09:59:34
【问题描述】:
什么:测试一个使用 await 的异步函数
使用:Angular 9,Jasmine 3.4.0
重现的最少代码:StackBlitz
我有这样的功能。请注意,它必须等待 this.getHeaders()。每当我删除 await 并用一些同步实现替换 getHeaders() 的实现时,测试就会成功运行。
测试的正确方法是什么?
private async loadUserData() {
// Try to remove await - the test runs successfully
//const headers = this.getHeaders();
const headers = await this.getHeaders();
return this.httpClient
.get<UserData>(window.location.origin + '/12345', { headers })
.toPromise()
.then((data) => {
this.userData = data;
})
.catch((e) => {
console.log('Oh noooo...');
});
}
我的尝试:
- 可能是 StackBitz 中的 url 不正确,但是 在本地测试时我确定它是,所以这不应该是根 原因
- 不确定,如果 fakeAsync() 会有所帮助 - “纯”http 测试有效...
不是欺骗:
【问题讨论】:
标签: angular testing async-await jasmine