ArrayInquirer#any? の引数なしケースをテストで網羅
ActiveSupport::ArrayInquirer の any? が引数なしで呼び出されたときの振る舞いをテストで明示的に確認できるようにしました。
背景
ArrayInquirer#any? は、引数が与えられない場合は内部で Array#any? を委譲し、配列が空でなければ true を返すとドキュメントに記載されています。これまでのテストスイートでは、候補を渡すケースとブロックを渡すケースのみが検証されており、引数なしの基本動作はテストでカバーされていませんでした。テストが欠如したままでは、将来的に実装が変更された際に期待通りの戻り値が保証できなくなるリスクがあります。
技術的な変更
今回の PR は、activesupport/test/array_inquirer_test.rb に 5 行のテストコードを追加し、any? の引数なしケースを検証します。
def test_any_without_candidates
assert @array_inquirer.any?
assert_not ActiveSupport::ArrayInquirer.new([]).any?
end
@array_inquirer は要素を持つ配列で初期化されているため any? が true を返すこと、空配列で生成したインクワイアが any? で false を返すことをそれぞれ assert と assert_not で確認しています。これにより、引数なし の呼び出しが期待通りに動作することが自動的に保証されます。
設計判断
本変更は 実装コードを変更せず にテストカバレッジを拡充するという方針で行われました。Rails のテストポリシーでは、public API の仕様は必ずテストで裏付けることが推奨されており、今回の追加はその原則に沿った最小限の改善と言えます。新たにテストが追加されたことで、将来的なリファクタリングやバグ修正時に既存仕様が破壊されない安全性が高まりました。
まとめ
ActiveSupport::ArrayInquirer#any? の 引数なし 挙動をテストで網羅したことで、配列が空でない場合は true、空の場合は false になることが明文化され、回帰テストの対象となりました。コード自体の変更はなく、テストスイートの信頼性だけが向上しています。