测试哈希是否包含特定键和值的有效方法是什么?
我所说的高效是指以下项目:
- 失败时易于阅读的输出
- 易于阅读的测试源
- 最短的测试仍然有效
有时在 Ruby 中我必须创建一个大哈希。我想学习一种有效的方法来测试这些哈希:
expected_hash = {
:one => 'one',
:two => 'two',
:sub_hash1 => {
:one => 'one',
:two => 'two'
},
:sub_hash2 => {
:one => 'one',
:two => 'two'
}
}
我可以测试这有几种方法。我最常使用的两种方法是一次使用整个哈希,或者单个项目:
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]
如何测试哈希的其余部分?