何时在 angular 中使用 waitForAsync

When to use waitForAsync in angular

从文档中我们可以读到:

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

Wraps a test function in an asynchronous test zone. The test will automatically complete when all asynchronous calls within this zone are done. Can be used to wrap an inject call.

看不懂,什么时候用waitForAsync函数? waitForAsync 与(asyncfakeAsync)有什么区别?

在Angular 10.1.0 中,waitForAsync() 取代了async() to avoid confusion,但其他方面完全相同。您看到的任何讨论使用 async() 的文档也将适用于 waitForAsync()async() 已被标记为已弃用,并将在版本 12 中完全删除。

在异步测试区包装一个测试函数。完成此区域内的所有异步调用后,测试将自动完成。可用于封装注入调用。

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

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

docs