Используйте Fetch-Mock для возврата тестового BLOB-объекта - PullRequest
0 голосов
/ 10 октября 2018

У меня есть выборка, которая получает файл с сервера, и я пытаюсь смоделировать выборку для своих тестов с помощью fetch-mock.
Используя этот код, я могу смоделировать конечную точку и поместить большой объект в тело:

const blob = new Blob(['a', 'b', 'c', 'd']);
fetchMock.once('*', {body: blob}, {sendAsJson: false});

Код, который тестируется:

fetch(url).then( ( response ) => {
            console.log(response);
            return response.blob();
        } ).then( ( blob ) => {
            console.log(blob);
        } )

Я вижу, что BLOB-объект находится в теле запроса

Body {
    url: '/mock/url',
    status: 200,
    statusText: 'OK',
    headers: Headers { _headers: {} },
    ok: true,
    body: Blob {},
    bodyUsed: false,
    size: 0,
    timeout: 0,
    _raw: [],
    _abort: false }

Но выполняетсяtest выдает ошибку:

    TypeError: response.blob is not a function

Выполнение кода с сервером возвращает действительный BLOB-объект в финал .then.

1 Ответ

0 голосов
/ 11 октября 2018

Таким образом, решение состояло в том, что fetch-mock имеет равноправную зависимость от node-fetch, которая используется во время тестов jest.У меня была более старая версия node-fetch, загруженная другой библиотекой.

Так что прямое требование последней версии node-fetch в моем package.json решило эту проблему.

...