在Cypress中选取API响应JSON字段时返回Undefined的问题
Cypress拦截请求后获取eval_score返回Undefined的排查方案
检查响应是否被解析为JSON
Cypress会自动解析Content-Type为application/json的响应,但如果后端返回的Content-Type不正确(比如text/plain),response.body会是字符串而非JSON对象。可以先打印response.body的类型确认:cy.wait("@trial").then(({ response }) => { console.log(typeof response.body); // 查看是string还是object const parsedBody = typeof response.body === 'string' ? JSON.parse(response.body) : response.body; expect(parsedBody[0].eval_score).within(0, 5); });确认请求别名@trial匹配正确
检查你的cy.intercept代码,确保别名@trial绑定的是目标请求。比如:// 确认拦截的是正确的请求路径 cy.intercept('GET', '/your-target-api').as('trial');测试运行时打开Cypress的Network面板,找到标记为
@trial的请求,核对其响应结构是否和浏览器中一致。验证请求是否成功完成
确保请求返回成功状态码(如200),避免因请求失败导致response.body结构异常:cy.wait("@trial").then(({ response }) => { expect(response.statusCode).to.eq(200); expect(response.body[0].eval_score).within(0, 5); });检查字段名拼写与大小写
再次核对后端返回的字段名是否和代码中一致,避免因大小写(如Eval_Score)或拼写错误导致无法获取字段。
内容的提问来源于stack exchange,提问作者Ugurcan
相关产品推荐
相关产品推荐

