Jest mockResolvedValue не является функцией - PullRequest
1 голос
/ 06 мая 2020

Я получаю сообщение об ошибке, имитирующее мой вызов API

TypeError: Cannot read property 'mockResolvedValue" of undefined

, и не могу понять почему. Я использую шутку, чтобы проверить свою функцию вызова api fetch.

Это моя функция, которую я экспортирую:

//file amData.jsx

const axios = require('axios');

async function fetchAssetManagerSummary() {
  const response = await axios.get("https://fr-assetmanager.azurewebsites.net/File/GetOverview?runDat=04/01/2020");
  return response.data;
}

module.exports = fetchAssetManagerSummary;

Это мой тестовый файл

const fetchAssetManagerSummary = require('./amData');
const axios = require('axios');
jest.mock("axios");

it("returns the object from fetch", async () => {
  axios.get.mockResolvedValue({
    data: [
      {
        userId: 1,
        id: 1,
        title: 'test'
      }
    ]
  })
  const data = await fetchAssetManagerSummary();
  console.log("data", data)
});

Ошибка, которую я получаю:

enter image description here

1 Ответ

4 голосов
/ 06 мая 2020

Поскольку вы уже издевались над классом axios, один из способов имитировать возвращаемое значение ax ios .get состоит в следующем:

axios.get = jest.fn().mockResolvedValue({
  data: [
    {
      userId: 1,
      id: 1,
      title: 'test'
    }
  ]
});
.
.
expect(axios.get).toHaveBeenCalledTimes(1);

В качестве альтернативы вы можете шпионить за ax ios .get () и предоставить фиктивное возвращаемое значение:

jest.spyOn(axios, 'get').mockResolvedValueOnce({
  data: [
    {
      userId: 1,
      id: 1,
      title: 'test'
    }
  ]
});
...