Skip to main content
zerotal

Documentation


Documentation / zerotal / index / EventFake

Class: EventFake

Defined in: packages/core/src/events/EventFake.ts:37

Drop-in replacement for Emitter that captures emitted events instead of dispatching them to listeners. Install at the start of a test, restore after.

Faking the emitter is what lets a test assert "publishing a post announces PostPublished" without the listeners for that event — mail, search indexing, cache invalidation — running as a side effect. To test a listener, do not fake: construct the listener and hand it an event directly.

Example

const events = EventFake.install();

await post.publish();

events.assertEmitted(PostPublished);
events.assertEmitted(PostPublished, (e) => e.postId === post.id);
events.assertNotEmitted(PostDeleted);

events.restore(); // call in afterEach

Extends

Dispatch

dispatchQueuedListener()

dispatchQueuedListener(listenerName, eventPayload): Promise<void>

Defined in: packages/core/src/events/Emitter.ts:251

Run a deferred listener by name with its raw payload. Called by the queue worker, not application code.

Parameters

listenerName

string

The registered listener class name.

eventPayload

any

The raw payload handed straight to handle() (for most listeners the payload is the event).

Returns

Promise<void>

Throws

If no listener is registered under listenerName.

Inherited from

Emitter.dispatchQueuedListener

Other

install()

static install(): EventFake

Defined in: packages/core/src/events/EventFake.ts:48

Replace the events container binding with this fake.

Returns

EventFake


restore()

restore(): void

Defined in: packages/core/src/events/EventFake.ts:56

Restore the original events binding. Call in afterEach.

Returns

void


emit()

emit<T>(event): Promise<void>

Defined in: packages/core/src/events/EventFake.ts:67

Capture the event — its listeners do NOT run.

Type Parameters

T

T extends object

Parameters

event

T

Returns

Promise<void>

Overrides

Emitter.emit


emitSync()

emitSync<T>(event): Promise<void>

Defined in: packages/core/src/events/EventFake.ts:72

Capture the event — its listeners do NOT run.

Type Parameters

T

T extends object

Parameters

event

T

Returns

Promise<void>

Overrides

Emitter.emitSync


clear()

clear(): void

Defined in: packages/core/src/events/EventFake.ts:77

Discard the captured events, and any listeners registered on the fake.

Returns

void

Overrides

Emitter.clear


emitted()

emitted(): object[]

Defined in: packages/core/src/events/EventFake.ts:85

Every event captured, in emit order.

Returns

object[]


emittedOf()

emittedOf<T>(EventType): T[]

Defined in: packages/core/src/events/EventFake.ts:90

The captured events of the given class, narrowed to its type.

Type Parameters

T

T extends object

Parameters

EventType

EventClass<T>

Returns

T[]


assertEmitted()

assertEmitted<T>(EventType, filter?): void

Defined in: packages/core/src/events/EventFake.ts:104

Assert an event of the given class was emitted, optionally one matching filter.

Type Parameters

T

T extends object

Parameters

EventType

EventClass<T>

filter?

(event) => boolean

Returns

void

Example

events.assertEmitted(OrderPlaced);
events.assertEmitted(OrderPlaced, (e) => e.total === 4999);

assertNotEmitted()

assertNotEmitted<T>(EventType, filter?): void

Defined in: packages/core/src/events/EventFake.ts:120

Assert no event of the given class was emitted.

Type Parameters

T

T extends object

Parameters

EventType

EventClass<T>

filter?

(event) => boolean

Returns

void


assertEmittedCount()

assertEmittedCount<T>(EventType, count): void

Defined in: packages/core/src/events/EventFake.ts:135

Assert exactly count events of the given class were emitted.

Type Parameters

T

T extends object

Parameters

EventType

EventClass<T>

count

number

Returns

void


assertNothingEmitted()

assertNothingEmitted(): void

Defined in: packages/core/src/events/EventFake.ts:145

Assert no events at all were emitted.

Returns

void

Subscription

on()

on<T>(eventClass, listenerClass): void

Defined in: packages/core/src/events/Emitter.ts:107

Register a listener class to run whenever the given event class is emitted. The same event may have many listeners; they run in registration order.

Type Parameters

T

T extends object

Parameters

eventClass

EventClass<T>

The event class to listen for.

listenerClass

ListenerClass<T>

A class with a handle(event) method.

Returns

void

Inherited from

Emitter.on


off()

off<T>(eventClass, listenerClass): void

Defined in: packages/core/src/events/Emitter.ts:134

Remove a previously registered listener for the given event class. No-op if the listener was never registered.

Type Parameters

T

T extends object

Parameters

eventClass

EventClass<T>

listenerClass

ListenerClass<T>

Returns

void

Inherited from

Emitter.off


hasListeners()

hasListeners<T>(eventClass): boolean

Defined in: packages/core/src/events/Emitter.ts:268

Whether any listener is registered for the given event class.

Type Parameters

T

T extends object

Parameters

eventClass

EventClass<T>

Returns

boolean

Inherited from

Emitter.hasListeners