如何在Minitest中校验数组元素匹配且不考虑顺序?
不考虑顺序的数组元素匹配测试方案
Minitest 写法:利用数组排序消除顺序影响
assert_equal ['2e', 'd4', '9d', '1a'].sort, ids.sort排序后两个数组只要元素完全一致,顺序就会统一,
assert_equal就能通过校验。RSpec 写法:使用框架自带的无序匹配器
expect(ids).to contain_exactly('2e', 'd4', '9d', '1a')contain_exactly专门用于忽略顺序的元素匹配,会校验元素的数量和值是否完全对应。通用思路(适用于多数Ruby测试场景):转成集合校验
assert_equal ['2e', 'd4', '9d', '1a'].to_set, ids.to_set注意:如果数组包含重复元素,集合会自动去重,这种场景下不适用,优先选排序的方法。
内容的提问来源于stack exchange,提问作者Jerome
相关产品推荐
相关产品推荐

