2017-05-14 17 views
0

私の場合、2つの異なるシステムから名前のセットを要求し、それらが等しいかどうか(順序に関係なく)を確認する必要があります。おそらく私は、なめらかを理解していないが、このコードは正常に動作します:Assertj抽出された文字列を比較する

assertThat(asList(assertThat(firstJSON) 
    .flatExtracting("innerObject") 
    .extracting("name")).stream().map(Object::toString).collect(Collectors.toList())) 
    .containsExactlyElementsOf(
      asList(assertThat(secondJSON) 
        .flatExtracting("innerObject") 
        .extracting("name")).stream().map(Object::toString).collect(Collectors.toList())); 

を、それは本当に醜いと私はこのような何かしたい:私はisSubsetOf()のような多くの機能を試してみた

assertThat(firstJSON) 
    .flatExtracting("innerObject") 
    .extracting("name") 
    .containsExactlyElementsOf(
      assertThat(secondJSON) 
        .flatExtracting("innerObject") 
        .extracting("name")); 

をまたはcontainsOnly()、また私はここにキャストしようとしましたが、常にいくつかの例外/エラーをキャッチします。

どのように比較すればよいですか?

+0

本当に 'assertThat(getNamesOutOf(firstJSON)).isEqualTo(getNamesOutOf(secondJSON))'であるべきです。私たちはfirstJSONとsecondJSONの型と構造を知っていたので、 'getNamesOutOf()'の実装を助けることができました。 –

答えて

0

この時点では、AssertJではなくhttps://github.com/lukas-krecan/JsonUnitを使用することを検討しました。JSONデータのサブセクションをアサートするための優れたナビゲーション機能を提供します。

関連する問題