(十一)用失败操作检查整批回退
测试在插入 b104 时通过 SQLite 触发器故意抛错。这时前几次 INSERT 已执行,但事务尚未提交。异常离开连接上下文,整个事务回滚。重新连接后,books、runs、rejected 都没有留下这批记录,原始 JSON 则已经保存。
修复触发器后,将原快照交给 replay,六本书和一份批次报告一起提交。这个测试同时检查了三个环节:原始输入能否留存、写入是否一起回退、重放是否复用同一编号。完整实现见 事务与重放测试。
再把第二页请求改成失败响应,检查数据库保持先前状态;把同批同编号改成不同书名,检查清洗在事务之前停止。沿错误发生的位置检查持久状态,比只断言“抛出了异常”更能发现部分写入。