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?