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

Cypress API测试:如何复用Mock的AUTH Token到后续请求

解决Cypress Mock Token接口并用于后续API请求的方案

问题分析

你原代码的核心问题包括:

  • Mock拦截的response未指定具体返回值,Cypress无法识别要返回的模拟数据
  • 拦截的URL和实际请求的URL不一致(存在空格差异)
  • 未从Mock响应中提取Token,也未将Token传递给第二个接口的请求头

可行实现代码

// 1. Mock第一个获取Token的接口,返回预设的Token数据
cy.intercept('GET', '/firstendpoint', {
  statusCode: 200,
  body: {
    authToken: 'mock-valid-token-12345' // 替换成你需要的Mock Token值
  }
}).as('mockToken');

// 2. 请求Mock后的第一个接口,提取Token
cy.request('GET', '/firstendpoint').then((tokenResponse) => {
  const authToken = tokenResponse.body.authToken;

  // 3. 使用提取的Token请求第二个接口,添加认证头
  cy.request({
    method: 'GET',
    url: '/secondendpoint',
    headers: {
      'Authorization': `Bearer ${authToken}` // 根据实际接口的认证格式调整,比如部分接口用"Token xxx"
    }
  }).then((secondResponse) => {
    // 执行你的断言逻辑
    expect(secondResponse.status).to.eq(200);
    expect(secondResponse.body).to.have.property('result'); // 示例断言,按需修改
  });
});

关键说明

  • Mock响应配置:cy.intercept的第三个参数直接定义返回的状态码和响应体,确保能拿到预期的Token结构
  • URL一致性:拦截的URL和cy.request的URL必须完全匹配,注意空格、大小写、路径参数等细节
  • 认证头传递:多数API会用Authorization头携带Token,格式需和目标接口要求一致
  • 确保Mock生效:如果需要保证拦截规则注册完成后再发起请求,可添加cy.wait('@mockToken'):
    cy.intercept(...).as('mockToken');
    cy.wait('@mockToken'); // 等待Mock规则生效
    cy.request(...);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:10:12