Я издеваюсь над socket.io-client. Я создаю фиктивный файл по пути <root>/__mocks__/socket.io-client.js
Но когда я запускаю тест, не похоже, что шутка использует макет. Что я делаю не так?
socket.io-client.js
let EVENTS = {};
function emit(event, ...args) {
EVENTS[event].forEach(func => func(...args));
}
const socket = {
on(event, func) {
if (EVENTS[event]) {
return EVENTS[event].push(func);
}
EVENTS[event] = [func];
},
emit
};
export const io = {
connect() {
return socket;
}
};
// to emulate server emit.
export const serverSocket = { emit };
// cleanup helper
export function cleanup() {
EVENTS = {};
}
export default io;
chat.test.js
import React from "react";
import mockio, { serverSocket } from "socket.io-client";
import Chat from "components/Chat";
import { render } from "@testing-library/react";
test("App should get messages", () => {
// first render the app
const utils = render(<Chat />); // then send a message
console.log(mockio);
serverSocket.emit("message", "Hey Wizy!");
expect(utils.getByText("Hey Wizy!")).toBeTruthy();
});