2014-11-04 67 views
0

在RSpec中,match_array匹配器可让您检查两个数组是否具有相同的元素而不涉及订单。我想知道Ruby Test :: Unit模块中的等价匹配器。Ruby Test :: Unit中的RSpec match_array?

即如何在不使用RSpec的情况下编写以下代码?

RSpec的

expect([1,2,3,4]).to match_array [4,3,2,1] 
# => true 
+0

你写你自己的... – 2014-11-04 02:58:36

回答

1

我不知道在Ruby单元测试库中的任何特定功能,支持比赛的任何操作。认为这是一个非常简单的使用两个数组上的减法运算符,然后检查它们是否为空。

让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 
相关问题