I mocked in
and emit
to test this.io.in(room).emit(eventName, result);
using jest
this.io.in(room).emit(eventName, result);
this.io.in(room)
is working well but I am not sure how to deal with .emit(eventName, result);
here is code
export interface ServerToClientEvents {
[EVENTNAME]: (payload: payload[]) => void;
}
import { BroadcastOperator, Server } from "socket.io";
import { ServerToClientEvents } from "../../common/Interfaces";
export class MockIo extends Server {
hasEmitted = false;
hasEmittedData: string[] = [];
hasEmittedEventName: string | symbol = "";
room: string | string[];
constructor() {
super();
}
emit(event: string | symbol, ...args: any[]): boolean {
this.hasEmitted = true;
this.hasEmittedData = args;
this.hasEmittedEventName = event;
return true;
}
in(room: string | string[]): BroadcastOperator<ServerToClientEvents,any> {
this.room = room;
return this.emit.bind(this) ;
}
}