如何通过函数返回cy.request响应中的指定部分?
解决Cypress函数返回值的编译器错误问题
你遇到的问题核心是:Add函数声明返回ItemClass类型,但函数本身没有返回任何值——cy.request是异步操作,.then()里返回的结果无法直接传递到函数外层,导致TypeScript触发"非undefined/void/null类型的函数必须返回值"的编译错误。
解决方案
修改函数返回类型为Cypress链式对象
Cypress的API都是异步链式调用,无法直接返回同步值,需要将函数返回类型改为Cypress.Chainable<ItemClass>,同时确保函数返回cy.request的链式调用结果:Add(someName): Cypress.Chainable<ItemClass> { return cy.request({ method: 'POST', url: someURL, body: { name: someName } }).then(function(response) { const result = response.body.find((item) => item.id === 123) return result; // result is of type ItemClass }) }调用函数时使用链式语法获取结果
因为函数返回的是链式对象,调用时需要通过.then()来获取最终的ItemClass实例:this.Add("testName").then((item) => { // 在此处理返回的ItemClass对象 console.log(item); })
原因说明
Cypress的所有命令都会被加入到内部命令队列异步执行,而非立即执行。因此不能像普通同步函数那样直接返回值,必须通过链式调用的方式传递异步结果。修改返回类型为Cypress.Chainable<ItemClass>后,TypeScript就能识别这是一个异步链式对象,从而解决编译错误。
内容的提问来源于stack exchange,提问作者MasterJoe
相关产品推荐
相关产品推荐

