You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript下使用Jest与Cypress@10.0.3报Assertion、JestMatchers错误

Cypress@10.0.3 与 Jest 搭配时 Assertion/JestMatchers 类型报错原因
  • 全局类型命名空间冲突
    Jest和Cypress都会向TypeScript全局作用域注入同名的断言相关类型:Jest默认注入JestMatchers、Assertion类型以及全局expect方法的类型定义,Cypress基于Chai断言体系,同样会在全局声明自己的Assertion类型、重写全局expect的类型。二者的类型声明未做命名空间隔离,TS聚合全局类型时会出现类型结构不兼容的问题,直接抛出类型错误。
  • tsconfig 类型加载范围未做隔离
    如果项目tsconfig中未明确配置types字段指定需要加载的类型范围,TS会自动扫描加载node_modules下所有可见的类型声明包,会同时载入@types/jest和Cypress内置的类型声明。哪怕Cypress端到端测试、Jest单元测试分目录存放,全局类型依然会跨目录生效,造成两类断言类型互相污染。
  • Cypress 10 版本类型挂载逻辑变更
    Cypress 10.x 调整了内置类型的默认挂载规则,不再需要手动引入cypress/types/chai等子路径类型文件,安装完成后会自动把Chai相关断言类型挂载到全局,刚好和Jest挂载的全局JestMatchers类型触发合并冲突。比如调用expect(xxx).toBe(xxx)时TS无法判定当前是Jest的expect还是Cypress的expect,就会抛出匹配器属性不存在、类型不匹配的错误。

典型报错特征:写Jest用例时提示Property 'toBe' does not exist on type 'Assertion',写Cypress断言时提示类型上不存在Jest专属匹配器的对应属性。

内容的提问来源于stack exchange,提问作者Semih Özden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 15:27:23