javascript - Hvordan simulere mottak av melding fra server til klient for å enhetsteste SignalR-klient/-administrator med react-testing-library og jest?
Jeg har en fungerende SignalR-manager med en connection: HubConnection som allerede er bygget med .build(). Sjekk følgende raske eksempel:
const connection: HubConnection = new HubConnectionBuilder().withUrl(...).build();
connection.start().then(() => {
console.log('connected');
...
connection.on('PushNewMessage', (message) => addNewMessageToReduxStore(message));
connection.on('DeleteMessage', (messageId) => deleteMessageFromStoreWithId(messageId));
...
});
Serveren sender meldingen 'PushNewMessage' med et objekt med tekst som streng og id som nummer. Dette utløser addNewMessageToReduxStore(message) som sporer endringer og utløser flere Redux-endringer.
Jeg vil skrive en enhetstest som starter med "Server sender en melding" og sammenligner den endelige Redux-lagringstilstanden fem sekunder etter at meldingen ble mottatt fra serveren for å matche en forventet lagringstilstand - da vil testen bestå.
Så hvordan simulere å motta en melding fra serveren i akkurat den web-socketen som administreres av HubConnection som brukes i initialiseringen av enhetstesten?