Skip to content
Buy me a coffee

FakeTimeProvider

Defined in: src/testing.ts:23

A clock you move by hand, so retries, timeouts and open circuits can be tested without waiting.

const time = new FakeTimeProvider();
const pipeline = new ResiliencePipelineBuilder({ timeProvider: time }).addRetry({ delay: '10s' }).addTimeout('1s').build();
// Attach the expectation first: the promise settles while runAll() fires timers.
const done = assert.rejects(pipeline.execute(() => neverResolves()), TimeoutRejectedError);
await time.runAll(); // 4 timeouts and 3 delays, instantly
await done;

new FakeTimeProvider(start?): FakeTimeProvider

Defined in: src/testing.ts:28

number | Date = ...

FakeTimeProvider

get pendingTimers(): number

Defined in: src/testing.ts:47

Timers scheduled and not yet fired.

number

advance(duration): Promise<void>

Defined in: src/testing.ts:52

Moves the clock forward, firing every timer that comes due, in order.

Duration

Promise<void>


clearTimeout(handle): void

Defined in: src/testing.ts:42

unknown

void

TimeProvider.clearTimeout


now(): number

Defined in: src/testing.ts:32

Epoch milliseconds.

number

TimeProvider.now


runAll(limit?): Promise<void>

Defined in: src/testing.ts:63

Fires timers until none are left (including ones scheduled while firing). Throws after limit timers to catch infinite loops.

number = 10_000

Promise<void>


setTimeout(callback, ms): number

Defined in: src/testing.ts:36

() => void

number

number

TimeProvider.setTimeout