Cypress项目TS迁移:自定义命令返回值类型不匹配报错求助
Cypress TS自定义命令返回值错误解决方法
错误根源
你写的自定义命令回调函数直接返回了普通对象,但Cypress的CommandFn类型要求回调只能返回void或者Chainable
修复步骤
用
cy.wrap()包装返回对象
把你要返回的对象用cy.wrap()包裹,转换成Chainable类型,这样就符合返回值要求了。示例代码:// 错误写法 Cypress.Commands.add('getInfo', (body: object) => { return { id: 1, firstName: 'John', lastName: 'Doe' }; }); // 正确写法 Cypress.Commands.add('getInfo', (body: object) => { return cy.wrap({ id: 1, firstName: 'John', lastName: 'Doe' }); });完善类型声明(可选但推荐)
在你的cypress.d.ts文件里补充命令的类型定义,让TS能正确推断返回值类型:declare namespace Cypress { interface Chainable { getInfo(body: object): Chainable<{ id: number; firstName: string; lastName: string }>; } }
为什么要这么做?
Cypress的命令体系是链式调用设计的,所有自定义命令必须返回链式对象才能继续后续操作,直接返回普通对象会打破这个结构,TS的类型检查自然会抛出错误。用cy.wrap()包装后,既保留了返回数据的能力,又符合Cypress的命令规范。
内容的提问来源于stack exchange,提问作者KiritoLyn
相关产品推荐
相关产品推荐

