Jestjs 如何测试返回承诺的异步操作?

Jestjs 如何测试返回承诺的异步操作?,jestjs,Jestjs,我通过http://localhost:8080/data/v1/shopping-cart.json#/作为fetchMock.get()方法的基本URL,并获得以下输出: fetch mock:传递给fetch mock的参数无效 原因可能是什么 您可以模拟fetch方法以返回模拟承诺,如下所示: 在您的测试用例中: fetchMock.get(`http://localhost:8080/data/v1/shopping-cart.json#/`).then(res => {

我通过
http://localhost:8080/data/v1/shopping-cart.json#/
作为fetchMock.get()方法的基本URL,并获得以下输出:

fetch mock:传递给fetch mock的参数无效


原因可能是什么

您可以模拟fetch方法以返回模拟承诺,如下所示:

在您的测试用例中:

fetchMock.get(`http://localhost:8080/data/v1/shopping-cart.json#/`).then(res => {
            console.log('response  ', res);
 });
然后,当您使用异步调用调用该操作时,结果应该等于您在
then
处理程序(成功处理程序)中执行的操作

类似地,您可以
拒绝
测试
catch
处理程序的承诺。
希望有帮助。

首先,您实际上误用了
fetchMock()
。查看详细信息。希望您将url和回调作为
的一部分传递。get()

其次,您不应该对URL mock使用哈希部分(
#/
)。浏览器不会将此部件发送到服务器,因此我相信您的模拟可能根本无法工作(直到
获取模拟
在引擎盖下剥离此部件以进行模拟,但我不会依赖于此)

window.fetch = jest.fn().mockImplementation(() => 

   new Promise((resolve) => 
     resolve({ /** dummy response object here */ })
  )
);
fetchMock.get('http://localhost:8080/data/v1/shopping-cart.json', (url, opts) => {
  return {body: 'aaa', status: 200}
});
fetch('http://localhost:8080/data/v1/shopping-cart.json').then(res => console.log(res));