fakeAsync
包装一个函数,以便在 fakeAsync Zone 中执行:
// 参数fn:可用于包装 inject() 调用。里面含有异步操作,比如计时器。
// 返回值:要包装为在 fakeAsync Zone 中执行的函数。
fakeAsync(fn: Function): (...args: any[]) => any
说明
- 通过调用
flushMicrotasks()
手动执行微任务, - 计时器是同步的,用
tick()
模拟异步时间的流逝。 - 如果函数末尾有任何待处理的计时器,则将引发异常。
示例
// Error: The code should be running in the fakeAsync zone to call this function
it('error test', () => {
let flag = false;
setTimeout(() => {
flag = true;
}, 100);
tick(100);
expect(flag).toBe(true);
});
it('correct test', fakeAsync(() => {
let flag = false;
setTimeout(() => {
flag = true;
}, 100);
tick(100);
expect(flag<