You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress技术问询:cy.intercept()是否阻止请求发往服务器及自定义响应

Cypress cy.intercept() 常见问题解答

问题1:“Intercept”是否能确保请求不会被发送至服务器?

  • 不一定,取决于cy.intercept()的使用方式:
    • 如果仅监听请求但未指定自定义响应,请求会正常发往服务器,你只是能追踪它的请求/响应过程;
    • 但如果通过reply()直接返回自定义响应,Cypress会阻止请求发送到真实服务器,直接把你指定的响应返回给前端代码。

问题2:在Cypress中,是否可以发送不会触达服务器、而是直接返回我们指定响应的请求?cy.intercept()是拦截已发请求修改响应,还是直接 mock?

  • 完全可以用cy.intercept()实现这种mock需求,它的核心能力之一就是直接拦截请求并返回自定义响应,无需请求真实服务器。
  • 示例代码:
    // 匹配GET请求/api/users,直接返回自定义响应,请求不会发往服务器
    cy.intercept('GET', '/api/users', {
      statusCode: 200,
      body: [{id: 1, name: 'Mock User'}]
    }).as('getUsers');
    
  • 当下游代码触发该请求时,Cypress会直接拦截并返回你定义的响应,不会将请求转发到真实服务器。
  • 如果你需要修改真实服务器的响应(请求仍会发往服务器),可以通过req.continue()实现:
    // 请求会发往服务器,在真实响应基础上修改后返回给前端
    cy.intercept('GET', '/api/users', (req) => {
      req.continue((res) => {
        res.body.push({id: 999, name: 'Modified User'});
      });
    });
    

内容的提问来源于stack exchange,提问作者Mag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:20:00