何时在Angular中使用waitForAsync

34

从文档中我们可以看到:

waitForAsync(fn: Function): (done: any) => any

将测试函数封装在一个异步测试区域中。当此区域中所有异步调用完成时,测试将自动完成。可以用来封装一个 inject 调用。

我不明白何时使用 waitForAsync 函数?与 asyncfakeAsync 相比有什么区别?


这个回答解决了你的问题吗?Angular2测试中fakeAsync和async的区别是什么 - Bozhinovski
1
抱歉,不行。这是一个好观点,但是主要问题是关于“waitForAsync”方法的,而该方法在您发布的文章中没有描述。 - Thomas Banderas
2个回答

41
在Angular 10.1.0中,waitForAsync()替代了async()以避免混淆,但两者的功能完全相同。任何讨论如何使用async()的文档也适用于waitForAsync()async()已被标记为过时的,并将在版本12中完全删除。

9

将测试功能包装在异步测试区域中。当此区域内的所有异步调用完成时,测试将自动完成。可用于包装注入调用。

因此,您无需手动调用作为参数传递的done()回调来标记测试已完成,也不必使用from '@angular/core/testing'中的fakeAsync()和其他辅助函数。

it('...', waitForAsync(inject([AClass], (object) => {
  object.doSomething.then(() => {
    expect(...);
  })
});

请见文档


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