トランザクションモックのテストヘルパーはコールバックのエラーを伝播させる版を必ず用意する
Go
mockery
テスト
RunInTx(ctx, opts, fn) のようなトランザクション抽象をモックする際、「fn を実行して常に nil を返す」ヘルパーだけだと、トランザクション内部の失敗分岐(楽観ロック失敗・一意制約・二重使用検知など)のテストが偽陰性になる。fn が返したエラーがモックで握りつぶされ、呼び出し元には成功として返るため、「エラーになるはず」のテストが「エラーが返らない」で落ちる(または逆に、アサーションが甘いと通ってしまう)。
対処: fn の戻り値をそのまま返すヘルパーを別に用意し、Tx 内の失敗系をテストするときはそちらを使う。
気づき方: 「Tx 内で early return するはずの異常系テストで err が nil になる」場合、まずトランザクションモックがエラーを伝播しているか確認する。mockery 等の生成モックは関数リターナー(.Return(func(...) error))に対応しているので、伝播版は1行で書ける。
適用条件: トランザクション境界をインターフェースで抽象化し、クロージャを渡す設計(Go の RunInTx、TypeScript の prisma.$transaction 相当)でモックテストをしている場合全般。