Cypress中拦截表单提交请求篡改响应失败,如何测试异常场景?
问题修正方案
你的测试存在三个核心问题导致断言失败,直接修正如下:
核心问题说明
- 拦截注册时机错误:
cy.intercept必须在触发请求前定义,你当前是点击提交后才注册,此时请求已发出,无法被捕获。 - 请求方法不匹配:创建用户接口通常为
POST请求,你写的GET会导致拦截无法匹配实际请求。 - 断言逻辑错误:
cy.wait("@newUser")返回的请求对象没有error属性,需断言响应状态码或UI错误反馈。
修正后的完整测试代码
// 1. 提前注册拦截规则,匹配POST请求并返回400错误 cy.intercept("POST", "**/create-users/**", { statusCode: 400, body: { name: "", age: "", location: "" }, }).as("newUser"); // 2. 填写表单字段 cy.get("#name").type("John Doe"); cy.get("#age").type("25"); cy.get("#location").type("North Pole"); // 3. 点击提交按钮触发请求 cy.get("#save-button").click(); // 4. 等待拦截的请求,断言响应状态码为400 cy.wait("@newUser").its("response.statusCode").should("eq", 400); // 5. 断言UI无创建成功反馈(根据项目实际UI调整选择器) cy.get(".success-notification").should("not.exist"); // 可选:断言错误提示显示 cy.get(".error-alert").should("be.visible").and("contain", "数据传输失败");
额外注意事项
- 请确保
**/create-users/**是实际接口的正确路径,若路径有差异需对应修改。 - UI断言部分需根据项目实际的反馈逻辑调整,比如检查是否停留在表单页面、无用户列表新增项等,确保用户未被创建。
内容的提问来源于stack exchange,提问作者Christian Solis
相关产品推荐
相关产品推荐

