角度测试:fakeAsync 块中的 tick 与 flashMicrotasks

Gle*_*mad 6 javascript unit-testing asynchronous angular angular-test

据我从阅读Angular 测试文档的理解,调用会tick()刷新块内的(支持的)宏任务和微任务队列fakeAsync。在这种情况下,我认为,在幕后,调用tick()将与进行一些额外的调用+调用相同flushMicrotasks()

\n\n

问题是,有什么情况我应该使用:

\n\n
it(\'should pass\', fakeAsync(() => {\n  // given some setup...\n\n  doSomethingAsynchronous();\n  flushMicrotasks();\n\n  // do some assertions...\n}));\n
Run Code Online (Sandbox Code Playgroud)\n\n

代替

\n\n
it(\'should pass\', fakeAsync(() => {\n  // given some setup...\n\n  doSomethingAsynchronous();\n  tick();\n\n  // do some assertions...\n}));\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x9d\x93

\n

小智 4

文章摘录于此处

宏任务通过 setTimeout、setInterval、setImmediate 等排队。微任务通过 process.nextTick、Promises、MutationObserver 等排队。

因此,如果您使用 setTimeouts、setInterval 等,然后使用 tick(),并且如果您使用一些 Promise,那么您可以使用 tick() 或lushMicrotasks()。