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