gpt4 book ai didi

ruby - 在 Ruby 测试中验证大哈希的有效方法

转载 作者:行者123 更新时间:2023-11-28 21:13:29 25 4
gpt4 key购买 nike

测试散列是否包含特定键和值的有效方法是什么?

高效是指以下各项:

  • 失败时易于阅读输出
  • 易于阅读的测试源
  • 仍能正常工作的最短测试

有时在 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]

如何测试哈希的剩余部分?

最佳答案

测试时,您需要使用可管理的 block 。正如您所发现的,针对巨大的哈希值进行测试使得很难跟踪正在发生的事情。

考虑使用 to_a 将您的哈希值转换为数组。然后您可以轻松地使用集合运算符来比较数组,并找出丢失/更改的内容。

例如:

[1,2] - [2,3]
=> [1]
[2,3] - [1,2]
=> [3]

关于ruby - 在 Ruby 测试中验证大哈希的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12809490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com