随手一记,文章结构比较紊乱,佬们看个乐呵~
Prisma
1、原目标。Jest运行时创建数据库,测试完毕后,删除数据库。
测试用例不通过,思考Prisma连错数据库。
问题:本质是开发流程不清晰。没有在用Prisma改造完数据库操作后先测试数据库连接,以及接口是否正常。就直接编写Jest执行e2e测试了。
解决办法:
- 看看老师是怎么做的,是测试时创建数据库,测试完删除数据库么?老师用的什么操作数据库的。
- 先测试原数据库是否正常跑通测试用例,能跑通。后续直接改env文件来进行创建测试数据库。也不删除数据库了。
解决问题了,实践过程中的收获与问题
舍弃了运行 pnpm testJest测试框架时通过mysql命令创建数据库和删除数据库的逻辑。涉及改动文件jest.config.ts、setupTest.ts。
统一导出的prisma Client AI配置乱整没仔细检查。涉及改动文件 prisma.config.ts、libs/prisma.ts
也许可以写一个通过node本身的child_process库的exec方法运行npx prisma db drop,来删除在jest.config.ts写配置一个运行前加载的配置项setupFiles写上文件路径即可 。不写是因为,测试库本可以不删,存的数据不多也就可以反复创建,因此就可以多个项目用同一个测试库,重新覆盖表结构就好了。
可能团队测试库数据多可能就需要这种方法。
- 改动文件:jest.config.ts、setupTest.ts、prisma.config.ts、libs/prisma.ts
- 收获:团队更新数据库(没有则创建)
npx prisma migrate --name init,因为能够版本回滚,记录sql语句于项目文件中。个人开发npx prisma db push直接更新,不记录额外版本。
命令可以写出script脚本: "db:push": "prisma db push",后续直接pnpm db:push就可以更新数据库表结构了