2017-08-04 1 views
2

Iは、以下のJSONの構造を有する:テスト(Hamcrest)

{ 
    content: [ 
    { 
     status: 100, 
    }, 
    { 
     status: 100, 
    }, 
    { 
     status: 200, 
    }, 
    { 
     status: 300 
    } 
    ] 
} 

私はJSONからの任意の状態値をテストするために、春に次のコードを使用ステータスの配列で指定可能な値をwithingれる:

jsonPath("$.content[*].status", Matchers.containsInAnyOrder(100, 200, 300)); 

調べ反復可能で指定した項目の数と同じ長さのないので、それは失敗します。このような配列を指定すると、Matchers.containsInAnyOrder(100, 100, 200, 300)が成功します。

マッチャの実装をチェックしたところ、マッチが成功するたびに、一致した値が指定されたアイテムから削除されたように見えました。

一致するアイテムを削除しないHamcrestマッチャーはありますか?

答えて

1

Matchers.containsInAnyOrder

検査のIterable上の単一のパスはどこにでも指定された項目内の1つの項目にそれぞれ論理的に等しい、項目の一連を生成する。一致イテラブルためにとらわれない整合を作成

しかし、あなたが本当にやろうとしている、すべての項目が 以内にそのように書くことができた値の有効なセット、であるかどうかを確認します

Matchers.everyItem(Matchers.isOneOf(100,200,300)) 
関連する問題