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

本文介绍了在Angular测试中如何使用fakeAsync、tick和flush进行异步操作模拟。fakeAsync用于在特定Zone中执行函数,tick用于模拟时间流逝并处理微任务,而flush则用于模拟处理所有未完成的计时器任务。通过示例展示了它们在宏任务和微任务处理中的应用,以及processNewMacroTasksSynchronously参数的影响。
最低0.47元/天 解锁文章
53

被折叠的 条评论
为什么被折叠?



