Javascript 在promise API调用jest中测试then()

Javascript 在promise API调用jest中测试then(),javascript,reactjs,testing,jestjs,Javascript,Reactjs,Testing,Jestjs,我正在尝试测试一个函数,它是一个api调用/承诺,这样我就可以检查中的状态,然后使用jest检查,但似乎不知道该怎么做。我尝试模拟文件和函数以返回承诺,但得到一个错误TypeError:(0,_dataAccess.fetchBundlesFromApi)不是一个函数,我尝试跟踪jests网站上的文档以及堆栈溢出的许多不同答案,但似乎都不起作用。下面是我要测试的代码。我希望能够调用它,然后说,如果可以,检查状态,或者如果出错,请执行其他操作。下面是我试图做的代码和我尝试过的嘲弄 getLates

我正在尝试测试一个函数,它是一个api调用/承诺,这样我就可以检查
中的状态,然后使用jest检查
,但似乎不知道该怎么做。我尝试模拟文件和函数以返回承诺,但得到一个错误
TypeError:(0,_dataAccess.fetchBundlesFromApi)不是一个函数
,我尝试跟踪jests网站上的文档以及堆栈溢出的许多不同答案,但似乎都不起作用。下面是我要测试的代码。我希望能够调用它,然后说,如果可以,检查状态,或者如果出错,请执行其他操作。下面是我试图做的代码和我尝试过的嘲弄

getLatestPrices = params => {
    const { updateBundles } = this.props;

    fetchBundlesFromApi(params)
      .then(({ data: { bundles } }) => {
        updateBundles(bundles);
        this.setState({ showUpdatingPrices: false });
        window.TemplateCalculator.reload();
      })
      .catch(() => goToUrl(bundlesUrl));
  };`
jest.mock('../../../../dataAccess', () => ({
      fetchBundlesFromApi: new Promise(resolve => resolve({ data: mockBundles })),
    }));
fetchBundlesFromApi
is
import{fetchBundlesFromApi}来自“../../../../../dataAccess”这是axios调用:

const fetchBundlesFromApi = params => axios(`${bundleRoute}/bundles${params}`);

export { fetchBundlesFromApi };
这是我试过的嘲弄

getLatestPrices = params => {
    const { updateBundles } = this.props;

    fetchBundlesFromApi(params)
      .then(({ data: { bundles } }) => {
        updateBundles(bundles);
        this.setState({ showUpdatingPrices: false });
        window.TemplateCalculator.reload();
      })
      .catch(() => goToUrl(bundlesUrl));
  };`
jest.mock('../../../../dataAccess', () => ({
      fetchBundlesFromApi: new Promise(resolve => resolve({ data: mockBundles })),
    }));
我还尝试了以下网站: .

我发现我必须像这样导入api调用函数:

import { fetchBundlesFromApi } from '../../../../dataAccess';
因为这个函数使用的是axios,所以我不得不嘲笑它。我是这样做的:

jest.mock('axios', () => jest.fn(() => Promise.resolve({ data: mockBundles })));
在我的测试中,我将其设置为异步,我可以等待函数响应

const fetchedBundles = await fetchBundlesFromApi(
  'params',
);

请编辑您的代码,
goToUrl
函数和
bundlesUrl
,它们来自哪里?“goToUrl”只是一个导入用于重定向的函数bundlesUrl'也是一个导入的变量,它只是一个字符串。