AssertJ: извлечение первых элементов из извлечения списка возвращает список - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь проверить первый элемент в извлеченном Списке.Однако AssertJ возвращает List вместо ожидаемого объекта из .first().

Учитывая следующий пример

public class AssertJTests
{
    @Test
    @DisplayName("Region Asia should only have one Country, Malaysia")
    public void assertRegion()
    {
        Region asia = new Region()
            .setName("Asia")
            .setCountries(Lists.newArrayList("Malaysia"));

        Consumer<Region> regionRequirement = region ->
            assertThat(region)
                .extracting(Region::getName)
                .containsOnly("Asia");

        Consumer<String> countryRequirement = country ->
            assertThat(country)
                .isEqualToIgnoringCase("Malaysia");

        assertThat(asia)
            .isInstanceOfSatisfying(Region.class, regionRequirement)
            .extracting(Region::getCountries)
            .hasSize(1)
            .first()
            .isInstanceOfSatisfying(String.class, countryRequirement);
}

    protected static class Region
    {
        private String name;

        private List<String> countries;

        List<String> getCountries()
        {
            return countries;
        }

        Region setCountries(final List<String> pCountries)
        {
            countries = pCountries;
            return this;
         }

         String getName()
         {
            return name;
         }

         Region setName(final String pName)
         {
             name = pName;
             return this;
          }
    }
}

Я ожидаю, что .first() вернет String, но вместо этоговернулся List<String>.Возникла следующая ошибка:

java.lang.AssertionError: [List check first element] Ожидается: <["Malaysia"]> будет экземпляром:но был случай:

1 Ответ

0 голосов
/ 22 мая 2018

extracting для утверждения Object извлекает свойства тестируемого объекта (здесь asia), в результате чего List извлекаются значения свойств.Ваш код приводит к извлечению только одного свойства, поэтому в результате получается список из одного значения, и получается, что это значение также является списком, после того, как extracting в итоге вы получите List, один элемент будет asia.countries.

...