在RSpec中,match_array
匹配器允许您检查两个数组是否具有相同的元素而不涉及订单。我想知道Ruby Test :: Unit模块中的等效匹配器。
即。如果不使用RSpec,你会如何编写以下内容?
RSpec的
expect([1,2,3,4]).to match_array [4,3,2,1]
# => true
答案 0 :(得分:0)
我不知道Ruby Unit Test库中支持匹配任何操作的任何特定函数。认为这是一个非常简单的使用两个数组上的减法运算符,然后检查它们是否为空。
设a和b是以不同顺序排列的整数数组
a = [1,2,3,4]
b = [4,3,2,1]
(a - b)
# => empty array
(a - b).empty?
# => true
所以把它放在一起就是
def match_array(array1, array2)
(array1 - array2).empty?
end
match_array(a, b)
# => true
此外,您可以使用Test::Unit#assert_block
require 'test/unit'
class TestArray < Test::Unit::TestCase
def test_array
assert_block do
([1,2,3,4] - [4,3,2,1]).empty?
end
end
end