无法验证赛普拉斯响应中的值

qat*_*mer -2 javascript cypress

我正在尝试使用 Cypress 验证端点响应中的密钥值,我想验证它responseCode应该等于 400,但它返回了我的undefined值。

我正在使用以下逻辑:

describe("Veriy Login", () => {
  context("Verify Login", () => {
    it("Verify User Login", () => {
      cy.request({
        method: "POST",
        url: "https://automationexercise.com/api/verifyLogin?email=login_user_123@test.com&password=Test@12345",
      }).should((response) => {
        expect(response.status).to.eq(200);
        expect(response
            .body.responseCode)
        .to.eq(400);
      });
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

当我在 Cypress runner 上运行此命令时,我收到了响应,可以在屏幕截图中查看:

在此输入图像描述

以下是回应:

{
    "responseCode": 400,
    "message": "Bad request, email or password parameter is missing in POST request."
}
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

小智 6

逻辑是

  • response.status是 200
  • 所以response.body部分是正确的(状态和主体是共同属性,如果其中一个存在,则另一个也存在
  • response.body.responseCode未定义
  • => 因此response.body是字符串类型

所以转换成JSON

expect(JSON.parse(response.body).responseCode).to.eq(400)
Run Code Online (Sandbox Code Playgroud)