AS3 Hamcrest - 断言一个数组包含所有另一个

时间:2013-04-18 01:12:21

标签: actionscript-3 flex unit-testing hamcrest

我正在尝试使用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',但我无法掌握语法。

2 个答案:

答案 0 :(得分:2)

这应该有效:

assertThat(a, hasItems.apply(null, b))

当然,这会检查b中的所有项目是否都包含在a中,这意味着a可以包含其他附加值。如果您想断言ab也有相同数量的值,那么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数组。