为什么Cypress没有使用我配置的stub接口路由?
常见遗漏配置和解决方法
- 缺失
cy.server()依赖cy.route必须配合前置的cy.server()调用才能生效,确保你在定义该stub之前已经执行了cy.server()开启路由拦截能力。 - 路由匹配规则不匹配实际请求
你当前的规则严格匹配了query参数仅存在website的情况,如果实际请求携带了额外的query参数,会直接匹配失败。可以将匹配规则放宽为**/api/v2/equipment/brand**适配所有带query的请求,或者使用函数匹配精准校验参数。 - 执行顺序错误
stub定义必须早于触发对应请求的操作执行,如果先触发页面请求再定义拦截规则,请求已经发出就不会被stub捕获。 - 版本兼容问题
如果你使用的是Cypress v10及以上版本,cy.route已经被废弃,推荐替换为官方推荐的cy.interceptAPI,无需额外开启server,写法参考:
cy.intercept("GET", "**/api/v2/equipment/brand", (req) => { // 仅拦截携带website参数的请求 if (req.query.website) { req.reply({ count: 0, next: null, previous: null, results: [] }) } }).as("findBrandsByWebsite")
你可以对照Cypress控制台的请求日志,对比实际请求的完整路径和参数,确认匹配规则是否正确,错误信息参考:
内容的提问来源于stack exchange,提问作者Salvatore Iovene
相关产品推荐
相关产品推荐

