Как смоделировать ответ с помощью 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

0 ответов

Другие вопросы по тегам