2

我正在尝试使用 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”,但我不太能掌握语法。

4

2 回答 2

2

这应该有效:

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

当然,这会检查 中的所有项目b是否包含在 中a,这意味着a可以包含其他附加值。如果您想断言a并且b还具有相同数量的值,那么assertEquals(a.length, b.length)我很好。

这里的诀窍是使用Function.apply()因为hasItems()不需要数组而是...rest样式参数。

作为旁注,allOf()旨在为测试值创建匹配器列表。

于 2013-04-18T02:17:37.747 回答
1

这是使用自定义 hamcrest 匹配器处理此问题的要点。

用法:assertThat(a,arrayExact(b));

Matcher 类:

https://gist.github.com/jamieowen/5480802

以及速记“arrayExact()”函数访问:

https://gist.github.com/jamieowen/5480819

它也应该匹配二维数组。

于 2013-04-29T10:26:39.113 回答