nexus-prisma搭配jest运行测试报错,附package.json配置求助
修复步骤
- 处理ESM模块转译
你当前使用的nexus-prisma@0.33.0输出为ESM格式,Jest 27默认不转译node_modules下的ES模块,直接运行会报语法错误,在jest配置中添加transformIgnorePatterns字段:
{ "jest": { // 保留原有配置不变 "transformIgnorePatterns": [ "node_modules/(?!(nexus|nexus-prisma)/)" ] } }
- 修正Prisma实例初始化逻辑
检查./src/test/jest-setup.ts文件,测试环境下不要复用生产环境的Prisma单例:
- 如果使用Mock版本的PrismaClient,参考配置:
import { PrismaClient } from '@prisma/client' import { mockDeep, mockReset } from 'jest-mock-extended' jest.mock('@prisma/client', () => ({ PrismaClient: jest.fn(() => mockDeep<PrismaClient>()) })) const prisma = new PrismaClient() beforeEach(() => mockReset(prisma))
- 如果使用真实测试数据库,需要手动管理连接生命周期:
import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() beforeAll(async () => await prisma.$connect()) afterAll(async () => await prisma.$disconnect())
- 预生成必要资源
测试运行前要先完成Prisma客户端和Nexus schema的生成,避免运行时报找不到类型的错误,修改package.json的test脚本:
{ "scripts": { "test": "prisma generate && nexus build && jest" } }
- 修正环境变量加载配置
当前你加载的是默认根目录.env文件,建议单独配置测试环境变量,修改jest的setupFiles配置:
{ "jest": { "setupFiles": [ ["dotenv/config", { "path": ".env.test" }] ] } }
报错参考

内容的提问来源于stack exchange,提问作者Manuel Bichler
相关产品推荐
相关产品推荐

