gpt4 book ai didi

javascript - Promise.allSettled 不是 Jest 测试中的函数,如何模拟?

转载 作者:行者123 更新时间:2023-12-05 05:02:32 31 4
gpt4 key购买 nike

我有一个操作使用 Promise.allSettled 从 API 返回多个统计对象。当我用模拟运行测试时,我得到了错误Promise.allSettled 不是函数

我有一个获取端点来返回不同类型的统计数据。myapi.com/get_stats/:type

我对这个 API 有如下操作

  const types = ['seo', 'referrers', 'clicks', 'posts', 'videos'];
const promises = [];
types.forEach(type =>
promises.push(
api().stats.getStats(type),
),
);
Promise.allSettled(promises).then(res => {
const { statData, statErrors } = mapData(res); // Data manipulation
dispatch({ type: FETCH_STATS_RESOLVED, payload: { statData, statErrors } });
});

我的测试设置

jest.mock('api-file.js', () => ({
api: () => ({
stats: {
getStats: type => {
switch (type) {
case: 'seo':
return mockSeoStats;
}
}
}
})
}));

在 beforeEach() 中

mockSeoStats.mockImplementation(() => Promise.resolve({ value: {data: myData} }));

我可以看到 Action 正在接收这些模拟值,但 Promise.allSettled 正在提示

我认为它在 Jest 模拟结构方面遇到了困难

那么,我怎样才能模拟 Promise.allSettled 只返回我期望的结果,而不是查看我模拟的函数?

最佳答案

Execute batch of promise with Promise.allSettled() 上提出了类似的问题Promise.allSettled 可从 Node 版本 12.0 + 开始使用

您可以使用 Node 的版本管理器更新节点

nvm ls
# Look for a 12.17.0 version (latest)
nvm install 12.17.0
# Automatically switches to new version
npm run test
# Should properly run your Promise.all

希望对您有所帮助。

关于javascript - Promise.allSettled 不是 Jest 测试中的函数,如何模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62160799/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com