typescript - Cypress - API 响应 - 类型 'body' .ts(2339) 上不存在属性 'Interception'

标签 typescript cypress

我需要获取由 cypress 事件触发的 api 请求返回的参数值,更具体地说,有一个由 click() 触发的 api 请求,我需要获取响应中返回的 applicationId 参数值body,以便我可以设置变量、别名或其他内容,以便稍后在代码中使用此 applicationId(我需要将其提供给我将使用 cy.request() 调用的其他端点的路径

screen

XHR 响应正文:

{
    "applicationId": "abc",
    "accessToken": "xyz"
}

我认为最终可以工作的代码:

    cy.intercept("POST", "**/application").as("startApplication");
    cy.wait('@startApplication').then((response) => {
      cy.wrap(response.body.applicationId).as('applicationId')
  })

但它在 IDE 中给了我一个错误: 类型“Interception”上不存在属性“body”。ts(2339) 当 Cypress 测试运行时,它只是永远加载。

我用谷歌搜索了很多,并尝试了很多不同的方法几个小时,但到目前为止还没有成功。我对 cypress、 typescript 甚至一般编码都很陌生,所以我什至可能会错过基本概念。

最佳答案

这是因为当您等待拦截时,您不仅会获得响应,您还会获得请求响应,如下所示一个物体的两个部分。

使用解构来正确引用响应。

这将为您提供正确的数据:

cy.wait('@startApplication').then(({request, response}) => {  
  cy.wrap(response.body.applicationId).as('applicationId')
})

关于typescript - Cypress - API 响应 - 类型 'body' .ts(2339) 上不存在属性 'Interception',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73425148/

相关文章:

npm - 如何解决 npm 错误代码 : 254 in azure DevOps?

cypress - 断言输入元素包含 Cypress 中的特定值

javascript - clearInterval 不适用于句柄

javascript - Angular 2 - 在 View 中操作 rxjs Observable

javascript - 如何从 js 创建 typescript d.ts

unit-testing - 如果我已经在 Vue.js 应用程序中使用 Cypress,我还需要单元测试框架吗?

graphql - 如何在 Cypress 中为特定的 GraphQL 请求设置别名?

javascript - typescript /Node : Error [ERR_MODULE_NOT_FOUND]: Cannot find module

javascript - 在 Typescript 中为 `this` 关键字键入注释

cypress - 如何从另一个测试文件访问 cypress.env 文件