首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jasmine:如何在fetch中测试fetch?

Jasmine:如何在fetch中测试fetch?
EN

Stack Overflow用户
提问于 2021-02-15 06:33:49
回答 1查看 742关注 0票数 0

我希望测试嵌套的fetches。到目前为止,我可以测试第一个fetch的结果,但不能访问另一个。我尝试在第一个fetch调用中嵌套下一个fetch调用,但似乎不起作用。第二个SpyOn函数调用创建了一个jasmine错误,说明我不能对同一个函数有多个spy。

茉莉花试验

代码语言:javascript
复制
  let response = new Response(
  JSON.stringify({
    test: "test",
  })
);

// creating a fetch spy
spyOn(window, "fetch").and.returnValue(Promise.resolve(response));

// make call to fetch
callFirstFetch().then((result) => {
  expect(window.fetch).toHaveBeenCalledWith("/test");

  spyOn(window, "fetch").and.returnValue(Promise.resolve(response));

  done();
});

而嵌套的抓取代码看起来像这样

代码语言:javascript
复制
function firstFetch(() => {
   return fetch("/test")
        .then(response => { 
                           response.json();
                           return secondFetch(); 
        })
});

function secondFetch(() => {
   return fetch("/test2")
        .then(response => { 
                           response.json();
                           console.log('done');
        })
});
 
firstFetch();
EN

回答 1

Stack Overflow用户

发布于 2021-11-25 15:32:12

下面是模拟fetch api调用的方法:

代码语言:javascript
复制
const okResponse = new Response(JSON.stringify({}), { status: 200, statusText: 'OK', });
spyOn(window, 'fetch').and.resolveTo(okResponse);

然后像这样测试它:

代码语言:javascript
复制
expect(window.fetch).toHaveBeenCalledWith(requestUrl, options);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66200776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档