• 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;

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