Как издеваться над вызовом axios, который возвращает буфер изображений

#javascript #unit-testing #jestjs

Вопрос:

Я пытаюсь издеваться над вызовом api axios, который возвращает буфер изображений, как показано ниже:

 <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 00 01 00 00 ff e1 00 de 45 78 69 66 00 00 49 49 2a 00 08 00 00 00 06 00 12 01 03 00 01 00 00 00 01 00 ... 12688 more bytes>
 

Моя функция выборки реализована отдельно.

 const axios = require('axios');
const logger = require('./logger');

const imageApi = axios.create({
  baseURL: 'https://endpoint',
  timeout: 5000,
});

const fetchRandomImage = async ({ imageId, width, height }) => {

  try {
    // Fetch image
    const response = await imageApi.get(`/id/${imageId}/${width}/${height}`, {
      responseType: 'arraybuffer',
    });
    return response.data;
  } catch (error) {
    return null;
  }
};

module.exports = fetchRandomImage;

 

Как правильно реализовать этот тест с помощью шутки с издевкой?

Ответ №1:

Мой подход к издевательству над методом обещания:

 jest.mock("./path-to-fetchRandomImage", () => jest.fn(() => Promise.resolve('whatever-you-want')));
 

Комментарии:

1. У меня есть другая функция для вызова axios. Я обновил вопрос. как я могу использовать эту функцию для написания теста?.

2. Я обновил ответ, вы это имеете в виду?

3. Что мне нужно, так это функция макета для этого и как использовать этот макет в тестовом файле. Я пишу тест для fetchRandomImage функции выше

4. Извините, я не понимаю 🙂