我正在尝试使用Flashbuilder 4.7环境附带的Hamcrest匹配器。我有2个数组,数组A和数组B.我想要做的是确保在A中找到B的所有成员而不管顺序如何。我正在寻找类似的东西。
var a:Array = new Array( 1, 2, 3, 4);
var b:Array = new Array( 1, 2, 3, 4 );
//Both arrays contain the same values so this should
//return true
assertThat( a , hasEachAndEveryLastOneInsideOfIt(b));
现在我已经尝试了'allOf'和'hasItems',但我无法掌握语法。
答案 0 :(得分:2)
这应该有效:
assertThat(a, hasItems.apply(null, b))
当然,这会检查b
中的所有项目是否都包含在a
中,这意味着a
可以包含其他附加值。如果您想断言a
和b
也有相同数量的值,那么assertEquals(a.length, b.length)
就可以了。
这里的诀窍是使用Function.apply()
因为hasItems()
不期望数组而是...rest
样式参数。
作为旁注,allOf()
旨在为测试值创建匹配器列表。
答案 1 :(得分:1)
以下是使用自定义hamcrest匹配器处理此问题的要点。
用法:assertThat(a,arrayExact(b));
Matcher课程:
https://gist.github.com/jamieowen/5480802
简写" arrayExact()"功能访问:
https://gist.github.com/jamieowen/5480819
它也应匹配2d数组。