Как смоделировать socket.io-клиент с помощью библиотеки jest / реагировать на тестирование - PullRequest
0 голосов
/ 03 октября 2019

Я создаю приложение чата и хотел бы написать интеграционные тесты, используя react-testing-library, и не могу понять, как имитировать socket.io-client, socket.on, socket.emit и т. Д.

Iпробовал следовать этой статье и пробовал использовать mock-socket.io и socket.io-mock все без удачи.

Этокомпонент, который я пытаюсь проверить:

import React, { useEffect, useState } from 'react';
import io from 'socket.io-client';
import 'dotenv/config';
import ChatInput from './ChatInput';
import Messages from './Messages';

function App() {
  const [messages, setMessages] = useState([]);

  const port = process.env.REACT_APP_SERVER_PORT;
  const socket = io(`http://localhost:${port}`);

  useEffect(() => {
    socket
      .emit('app:load', messageData => {
        setMessages(messages => [...messages, ...messageData]);
      })
      .on('message:new', newMessage => {
        setMessages(messages => [...messages, newMessage]);
      });
  }, []);

  const postMessage = input => {
    socket.emit('message:post', input);
  };

  return (
    <div className="App">
      <Messages messages={messages} />
      <ChatInput postMessage={postMessage} />
    </div>
  );
}

export default App;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...