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

如何解决NestJS中mockResolvedValue的‘类型无法赋值给never’错误?

解决NestJS+Prisma测试中mockResolvedValue的TypeScript类型错误

你遇到的是TypeScript类型推断问题:jest.fn()默认没有明确的返回值类型,导致mockResolvedValue期望接收的参数类型被判定为never,和你的user[]类型不兼容。以下是几种类型安全的解决方式:

方法一:给jest.fn指定泛型类型

明确告知TypeScript这个mock函数返回的是Promise<user[]>:

const db = {
  usuario: {
    findMany: jest.fn<Promise<user[]>, []>().mockResolvedValue(mockUsers),
  },
};

这里泛型的第一个参数是函数的返回类型,第二个是函数的参数类型数组(findMany无参数所以是空数组)。

方法二:给mock对象添加类型注解

用Pick工具类型从PrismaService中提取usuario相关的类型,让TypeScript识别mock对象的结构:

const db: Pick<PrismaService, 'usuario'> = {
  usuario: {
    findMany: jest.fn().mockResolvedValue(mockUsers),
  },
};

方法三:临时类型断言(不推荐,仅应急用)

如果想快速跳过类型检查,可以用类型断言强制转换:

const db = {
  usuario: {
    findMany: jest.fn().mockResolvedValue(mockUsers as never),
  },
};

这种方式会绕过TypeScript的类型检查,可能隐藏潜在问题,建议优先用前两种方法。

另外注意:你的Prisma Schema里定义的是model user,但代码中调用的是prisma.usuario.findMany(),确认下Prisma生成的client中模型名称是否正确(Prisma默认会将model名转为驼峰,但如果是西班牙语的usuario可能是你手动指定的,确保一致即可)。

内容的提问来源于stack exchange,提问作者Johan García

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:07:14