ハッシュに特定のキーと値が含まれていることをテストする効率的な方法は何ですか?
効率的とは、次の項目を意味します。
- 失敗したときに出力を読みやすい
- 読みやすいテストソース
- まだ機能するための最短テスト
Rubyでは、大きなハッシュを作成しなければならないことがあります。これらのハッシュをテストする効率的な方法を学びたいと思います。
expected_hash = {
:one => 'one',
:two => 'two',
:sub_hash1 => {
:one => 'one',
:two => 'two'
},
:sub_hash2 => {
:one => 'one',
:two => 'two'
}
}
これにはいくつかの方法があります。私が最もよく使用する2つの方法は、一度にハッシュ全体、または単一のアイテムです。
assert_equal expected_hash, my_hash
assert_equal 'one', my_hash[:one]
これらは、サンプルハッシュのような小さなハッシュでは機能しますが、非常に大きなハッシュでは、これらのメソッドは機能しなくなります。ハッシュテスト全体では、失敗に関する情報が多すぎます。また、単一項目のテストでは、テストコードが大きくなりすぎます。
効率的な方法は、テストをハッシュの一部のみを検証する多数の小さなテストに分割することだと考えていました。これらの小さなテストのそれぞれは、ハッシュスタイルテスト全体を使用できます。残念ながら、サブハッシュにないアイテムに対してRubyにこれを実行させる方法がわかりません。サブハッシュは次のように実行できます。
assert_equal expected_hash[:sub_hash1], my_hash[:sub_hash1]
assert_equal expected_hash[:sub_hash2], my_hash[:sub_hash2]
ハッシュの残りの部分をテストするにはどうすればよいですか?