Assertj Сравнение извлеченных массивов String

В моем случае мне нужно запросить набор имен из двух разных систем и убедиться, что они равны (независимо от порядка). Скорее всего, я чего-то не понимаю, но этот код работает нормально:

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(), также я пробовал ставить кастинг здесь и там, но всегда вылавливал какое-то исключение / ошибку.

Как их сравнить?


person boringMax    schedule 14.05.2017    source источник
comment
Это действительно должно быть assertThat(getNamesOutOf(firstJSON)).isEqualTo(getNamesOutOf(secondJSON)). Мы могли бы помочь в реализации getNamesOutOf(), если бы знали тип и структуру firstJSON и secondJSON.   -  person JB Nizet    schedule 14.05.2017


Ответы (1)


На этом этапе я бы подумал об использовании https://github.com/lukas-krecan/JsonUnit. вместо AssertJ он предоставляет удобные функции навигации для утверждения части ваших данных JSON.

person Joel Costigliola    schedule 15.05.2017