javascript / expert
Snippet
Überprüfung asynchroner Event-Emitter mittels Microtask-Queue-Assertions
In Svelte-Komponententests werden Event-Dispatches und reaktive Statusupdates nicht synchron auf dem aktuellen Stackframe ausgeführt. Die Verwendung des tick-Promises von Svelte garantiert das Warten auf die Microtask-Queue vor der Assertion von Event-Payloads.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
import { tick } from 'svelte';export async function assertEventEmitted(dispatchFn, listenerSpy) {dispatchFn('customEvent', { value: 99 });await tick();if (!listenerSpy.calledWith(99)) {throw new Error('Asynchronous event payload mismatch');}}
svelte
Erklärung
1
import { tick } from 'svelte';
Importiert die tick-Hilfsfunktion von Svelte zum Warten auf ausstehende Microtasks.
2
export async function assertEventEmitted(dispatchFn, listenerSpy) {
Exportiert eine asynchrone Test-Helper-Funktion für Dispatcher und Spy-Objekte.
3
dispatchFn('customEvent', { value: 99 });
Löst ein benutzerdefiniertes Event über die übergebene Emitter-Funktion aus.
4
await tick();
Pausiert die Testausführung, bis Svelte alle ausstehenden Updates verarbeitet hat.
5
if (!listenerSpy.calledWith(99)) {
Prüft, ob der Listener-Spy mit den erwarteten Argumenten aufgerufen wurde.