如何在CI测试流水线中复现Prisma迁移失败场景?
可行的Prisma迁移失败复现方案(适配CI场景)
以下几种方法无需修改Prisma自动生成的无错误迁移文件,可在CI环境中简单复现迁移失败:
强制终止迁移进程
在CI脚本中给迁移命令添加超时限制,让进程在执行中途被强制终止,模拟迁移崩溃场景。例如:# Linux/macOS timeout 3s npx prisma migrate deploy # Windows(PowerShell) Start-Process -NoNewWindow -Wait -Timeout 3000 npx -ArgumentList "prisma migrate deploy"调整超时时间,确保迁移未完成就被终止,触发失败状态。
限制数据库资源配额
如果CI中使用Docker部署测试数据库,启动容器时设置极低的资源限制,让迁移因资源不足失败。例如启动PostgreSQL容器:docker run -d --name test-db -p 5432:5432 -e POSTGRES_PASSWORD=postgres --memory=64m --cpus=0.1 postgres:latest当迁移执行表结构变更、数据迁移等操作时,会因内存/CPU不足触发失败。
临时中断数据库连接
在CI脚本中先启动迁移命令,随后立即断开数据库连接(几秒后可恢复,不影响后续测试)。例如用Docker操作:# 后台启动迁移 npx prisma migrate deploy & # 延迟1秒后停止数据库容器 sleep 1 && docker stop test-db # 等待迁移进程退出(此时已失败) wait $!这种方式模拟了迁移过程中数据库宕机的场景,迁移文件本身无错误,符合测试需求。
利用Prisma迁移钩子注入失败逻辑
临时修改schema.prisma的迁移钩子,在迁移流程中插入失败命令。例如:generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") migrations { hooks = [ "beforeMigrate": "exit 1" ] } }在CI测试时动态替换
schema.prisma的这段配置,执行迁移时会在前置钩子触发失败,测试完成后恢复原配置即可。
内容的提问来源于stack exchange,提问作者user14082
相关产品推荐
相关产品推荐

