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