Я пытаюсь издеваться над методом emit из io, но я не знаю, как его издеваться. Это мой Join.jsx
файл
//Join.jsx
import React from 'react';
import io from 'socket.io-client';
const Join = () => {
let socket;
const ENDPOINT = 'localhost:5000';
const join = () => {
socket = io(ENDPOINT);
socket.emit('join', { name: 'Paola', room: '1' }, () => { });
};
return (
<div className="join-container">
<a className="join-button" onClick={join}>Sign in</a>
</div>
);
};
export default Join;
Это одна вещь, которую я пробовал
//Join.test.jsx
import React from 'react';
import { shallow } from 'enzyme';
import io from 'socket.io-client';
import Join from './Join';
describe(('Join') => {
it(('joins a chat') => {
jest.mock('socket.io-client', () => {
return jest.fn(() => ({
emit: jest.fn(),
}));
});
const ENDPOINT = 'localhost:5000';
const mockSocket = io(ENDPOINT);
const joinWrapper = shallow(<Join />);
joinWrapper.find('a').simulate('click');
expect(mockSocket.emit).toHaveBeenCalledWith('join', { name: 'Paola', room: '1' }, () => { });
})
})
Это ошибка, которую я получаю в терминале
expect(received).toHaveBeenCalledWith(...expected)
Matcher error: received value must be a mock or spy function
Received has type: function
Received has value: [Function anonymous]
52 | const joinWrapper = shallow(<Join />);
53 | joinWrapper.find('a').simulate('click');
> 54 | expect(mockSocket.emit).toHaveBeenCalledWith('join', { name: 'Paola', room: '1' }, () => { });
| ^
55 | });
56 | });
57 |
Пожалуйста, не будьте грубы с вашими ответами, я новичок в тестировании, и я действительно потерян. Заранее спасибо за ответы!!
jest.mock
в область, где вы импортируете библиотеку, т.е. перед блоком описания - person Teneff   schedule 27.08.2020