Как смоделировать ответ с помощью fetch-mock и rewire при выполнении запроса вне тестового файла - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу проверить мой 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.

Iпопытался установить 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

...