Ruby Test :: Unit中的RSpec match_array?

时间:2014-11-04 02:47:48

标签: ruby rspec

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

即。如果不使用RSpec,你会如何编写以下内容?

RSpec的

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

1 个答案:

答案 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