2017-05-14 49 views
0

在我的情况下,我需要从两个不同的系统请求一组名称,并验证它们是否相等(无论顺序)。最大的可能是我不明白不便,但是这个代码工作正常: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())); 

,但它看起来真的很丑陋,我想是这样的:

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

我已经试过像isSubsetOf()许多功能或者containsOnly(),我也试着在这里和那里投射,但总是捕捉一些异常/错误。

我如何比较它们?

+0

它应该是'assertThat(getNamesOutOf(firstJSON))。isEqualTo(getNamesOutOf(secondJSON))'。我们可以帮助实现getNamesOutOf(),我们知道firstJSON和secondJSON的类型和结构。 –

回答