Есть ли способ вызвать fetch
в тесте Jest?Я просто хочу вызвать живой API, чтобы убедиться, что он все еще работает.Если есть 500 ошибок или данные не соответствуют ожиданиям, тест должен сообщить об этом.
Я заметил, что использование request
из модуля http
не работает.Вызов fetch
, как я обычно делаю в коде, который не предназначен для тестирования, выдаст ошибку: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
API возвращает менее чем за секунду, когда я вызываю его в браузере.Я использую примерно следующее для проведения теста, но я также просто возвратил функцию fetch
из теста без использования done
с аналогичным отсутствием успеха:
import { JestEnvironment } from "@jest/environment";
import 'isomorphic-fetch';
import { request, } from "http";
jest.mock('../MY-API');
describe('tests of score structuring and display', () => {
test('call API - happy path', (done) => {
fetch(API).then(
res => res.json()
).then(res => {
expect(Array.isArray(response)).toBe(true);
console.log(`success: ${success}`);
done();
}).catch(reason => {
console.log(`reason: ${reason}`);
expect(reason).not.toBeTruthy();
done();
});
});
});
Как ни странно, естьсообщение об ошибке я вижу в виде сообщения консоли после истечения времени ожидания: reason: ReferenceError: XMLHttpRequest is not defined
Как я могу сделать реальный, а не поддельный вызов живого API в тесте Jest?Это просто запрещено?Я не понимаю, почему это не сработало, учитывая документацию , поэтому я подозреваю, что есть что-то, что неявно импортируется в React-Native, которое должно быть явно импортировано в тест Jest, чтобы сделать fetch
или request
функция работы.