首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Cypress能拦截直接向服务器发出的请求吗?

Cypress能拦截直接向服务器发出的请求吗?
EN

Stack Overflow用户
提问于 2021-12-17 19:03:35
回答 1查看 643关注 0票数 0

我一直试图用Cypress的截取方法拦截一个服务器请求。我注意到Cypress可以拦截通过前端/浏览器发出的请求,但是,如果我直接向后端服务器发出请求,则拦截方法不能工作。

让我澄清我的意思:

  • 一件事是拦截前端/浏览器向后端服务器发出的请求。
  • 另一件事是拦截不使用浏览器但直接调用后端端点的调用。

例如:我可以使用前端界面创建用户,也可以创建一个用户直接调用后端端点(直接调用服务器)。

回到我的问题上。是否有一种方法可以拦截直接到后端端点的呼叫?

这就是我迄今尝试过的:

  • 我编写了一个regex来拦截api/v0/customers
  • 然后,我向http://locahost:5440/api/v0/customers (即服务器的URL )提出了一个请求。
  • 最后,我等待请求的发生。

使用Cypress截取方法的超时请求

代码语言:javascript
代码运行次数:0
运行
复制
    cy.intercept(/^\/api\/v0\/customers\/$/).as('createCustomer');
    cy.request(createCustomer(customerData, headers));
    cy.wait('@createCustomer').then(({ status, body }) => {
      const customerId = body.customer_id;
      console.log(body);
      expect(status).equal(201);
    });

问题是:出现了超时错误。

  • 正如您在图像中看到的那样,我向http://locahost:5440提出了一个请求,即服务器URL。注意:我确保服务器已经启动并运行。
  • 正则表达式也是正确的,它将与端点http://locahost:5440/api/v0/customers匹配。

我怀疑拦截只适用于通过浏览器发出的请求。这个说法正确吗?我在Cypress文档里找不到这个答案。有什么方法可以让我拦截直接打到服务器的电话(不使用浏览器)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-17 19:11:26

您不必拦截您使用柏树显式发出的请求,只需使用.then获得响应,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
cy.request(createCustomer(customerData, headers)).then((response) => { 
    const customerId = response.body.customer_id; 
    console.log(response.body);
    expect(response.status).equal(201);
});

参考资料:https://docs.cypress.io/api/commands/request#Yields

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70397791

复制
相关文章

相似问题

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