模拟函数返回未定义

时间:2020-03-27 22:42:37

标签: javascript async-await mocking jestjs

我具有此功能:

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

1 个答案:

答案 0 :(得分:0)

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

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

相关问题