模拟函数返回未定义

问题描述 投票:0回答:1

我具有此功能:

export const getGroups = async () => {
  if (userData !== false) return Promise.resolve(userData);

  try {
    const groupApiUrl = getDashboardPath(GROUPS_TAB_INDEX);
    const data = await fetch(groupApiUrl);
    userData = await data.json();
    return Promise.resolve(userData);
  } catch (error) {
    return Promise.reject(error);
  }
};

我正在尝试为此编写测试:

jest.mock('../apis/getGroups.js');
const getGroups = require('./getGroups');

describe('getGroups', () => {
  it('calls api', async () => {
    // The assertion for a promise must be returned.
    const data = await getGroups();
    console.log('DATA', data);
    expect(data).toBe({
      groups: [
        { id: 1, name: 'fake data' },
        { id: 2, name: 'fake data 2' }
      ]
    });
  });
});

enter image description here

javascript async-await mocking jest
1个回答
1
投票

async/await可以在Jest中使用,但需要启用Babel。要在您的项目中启用异步/等待,请安装@ babel / preset-env并在babel.config.js文件中启用该功能。

来源-https://jestjs.io/docs/en/tutorial-async

© www.soinside.com 2019 - 2024. All rights reserved.