2

Flashbuilder 4.7 環境に付属の Hamcrest マッチャーを使用しようとしています。配列 A と配列 B の 2 つの配列があります。私がやりたいことは、順序に関係なく、B のすべてのメンバーが A にあることを確認することです。このように機能するものを探しています。

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

カスタムハムクレストマッチャーでこれを処理する要点を次に示します。

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

Matcher クラス:

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

そして、省略形の「arrayExact()」関数アクセス:

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

また、2 次元配列にも一致する必要があります。

于 2013-04-29T10:26:39.113 に答える