Код JS может отправить запрос несколькими способами: new XMLHttpRequest
, fetch
и new WebSocket
. После того, как вы высмеяли это в настройке файла (jest предоставляет один файл, который наверняка будет вызван перед выполнением любого теста), вы в безопасности:
window.fetch = jest.fn();
и позже в ваших тестах делайте это как
window.fetch.mockImplementation((url) =>
url === 'https://example.org/data' &&
Promise.resolve({ message: 'wrong', data: 1 })
);
...
expect(window.fetch).toHaveBeenCalledWith('https://example.org/data');
...
Конечно, это было бы довольно большой работой, чтобы сделать это самостоятельно. Таким образом, есть определенные пакеты, которые делают это для вас. Скажите fetch-mock
. Моим любимым на данный момент является nock
, который охватывает как XHR
, так и fetch
и предоставляет множество утилит для охвата большинства возможных крайних случаев во время проверки сетевых ответов / запросов.