A mock to test the Socket.IO library implementation.
yarn add socket.io-mock-ts
Create a new socket mock with:
import { SocketServerMock } from 'socket.io-mock-ts';
const socket = new SocketServerMock();
const client = socket.clientMock;
And use the socket as if it was a normal Socket.IO socket.
For example:
import { SocketServerMock } from 'socket.io-mock-ts';
import { expect, test } from 'vitest';
test('Sockets should be able to talk to each other without a server', () => {
const socket = new SocketServerMock();
socket.on('message', (message: string) => {
expect(message).toBe('Hello World!');
});
socket.clientMock.emit('message', 'Hello World!');
});
Or with using promises in unit tests, for example:
import { SocketServerMock } from 'socket.io-mock-ts';
import { expect, test } from 'vitest';
test('Sockets should be able to talk to each other without a server', () => {
const socket = new SocketServerMock();
const data = await new Promise((resolve) => {
socket.on('message', (message: string) => {
resolve(message);
});
socket.clientMock.emit('message', 'Hello World!');
});
expect(data).toBe('Hello World!');
});