• Overview
@angular/core/testing

fakeAsync

function
stable

IMPORTANT: This API requires Zone.js and cannot be used with the Vitest test runner

API

function fakeAsync(
  fn: Function,
  options?: { flush?: boolean | undefined } | undefined,
): (...args: any[]) => any;
@paramfnFunction

The function that you want to wrap in the fakeAsync zone.

@paramoptions{ flush?: boolean | undefined; } | undefined
  • flush: When true, will drain the macrotask queue after the test function completes. When false, will throw an exception at the end of the function if there are pending timers.
@returns(...args: any[]) => any

The function wrapped to be executed in the fakeAsync zone. Any arguments passed when calling this returned function will be passed through to the fn function in the parameters when it is called.

Description

IMPORTANT: This API requires Zone.js and cannot be used with the Vitest test runner

Wraps a function to be executed in the fakeAsync zone:

  • Microtasks are manually executed by calling flushMicrotasks().
  • Timers are synchronous; tick() simulates the asynchronous passage of time.

Can be used to wrap inject() calls.

Usage Notes

Example

describe('this test', () => {
  it(
    'looks async but is synchronous',
    <any>fakeAsync((): void => {
      let flag = false;
      setTimeout(() => {
        flag = true;
      }, 100);
      expect(flag).toBe(false);
      tick(50);
      expect(flag).toBe(false);
      tick(50);
      expect(flag).toBe(true);
    }),
  );
});
Jump to details