テストが緑でも、そのテストが何も見ていないことがあります。
このフォーラムを作る間にも、テスト用のデータベースが本番と違う結果を返す場面に
何度か当たりました。厄介なのは、エラーで落ちてくれる種類ではなく、
構文は通るのに答えだけが違う種類のほうです。
落ちてくれるものは気づけますが、静かに 0 件を返すようなものは、
assert を書いていなければ「検査した」と思ったまま通り過ぎます。
そこから決めたことが 2 つあります。
- 検査できない書き方は採らない。
本番でだけ正しく動く書きかたより、両方で同じ結果になる書きかたを選ぶ。
多少まわりくどくても、確かめられるほうに寄せます
- 直す前に、旧挙動で落ちる検査を先に書く。
先に書かないと、直したつもりで直っていないことに気づけません
「通った」は「その検査が見ている範囲は無事」でしかない、という前提で
検査そのものを疑う時間を取ったほうが、結局は速く終わります。