Как смоделировать ответ с помощью fetch-mock и rewire при выполнении запроса вне тестового файла
Я хочу протестировать мой JS-файл, который включает некоторые методы выборки. Теперь я хочу высмеять ответ этих методов запроса и получил некоторые проблемы с ним.
Я импортировал все мои методы JS-файла, которые я хочу протестировать с помощью rewire.
Для насмешек над своими запросами на получение я использую fetch-mock.
Если я высмеиваю ответы как это, это работает отлично:
//test.js
fetchMock = require('fetch-mock');
fetchMock.mock('http://example.com', 200);
const res = await fetch('http://example.com');
assert(res.ok);
fetchMock.restore();
Но когда я отправляю запрос методом моего файла JS, он не работает. например:
//file.js
function fetchExample() {
return fetch('http://example.com');
}
//test.js
fetchMock = require('fetch-mock');
app = require('rewire');
fetchExmaple = app.__get__('fetchExmaple');
fetchMock.mock('http://example.com', 200);
const res = await fetchExmaple('http://example.com');
assert(res.ok);
fetchMock.restore();
Кажется, что область действия fetch-mock есть только в моем тестовом файле, и все мои функции, которые я экспортирую с помощью rewire, выполняются в моем файле JS.
Я попытался установить fetchMock как глобальную переменную в моем JS-файле и выполнить функцию fetchMock.mock() в моем тестовом файле.
//test.js
//fetchMock = require('fetch-mock');
app.__set__('fetchMock', require('fetch-mock');
app = require('rewire');
fetchExmaple = app.__get__('fetchExmaple');
fetchMock.mock('http://example.com', 200);
const res = await fetchExmaple('http://example.com');
assert(res.ok);
fetchMock.restore();
Но это тоже не работает. Я не знаю, как выполнить fetchMock.mock() в моем файле JS. Или есть другие решения?
Я надеюсь, что кто-нибудь может мне помочь.
Заранее спасибо.
С наилучшими пожеланиями.
Sony