AssertJ:从提取列表中检索第一项返回列表

Ras*_*Zin 1 java assertj

我正在尝试验证提取列表中的第一项。然而 AssertJList从 中返回一个而不是预期的对象.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;
          }
    }
}
Run Code Online (Sandbox Code Playgroud)

我期待着.first()回来,String但它却回来了List<String>。出现以下错误:

java.lang.AssertionError: [列表检查第一个元素] 期望:<["Malaysia"]> 是以下实例:<java.lang.String> 但是以下实例:<java.util.ArrayList>

Sae*_*ian 6

看起来他们解决了这个问题,因为现在可以执行以下操作:

assertThat(asia)
  .extracting(Region::getCountries)
  .asList()
  .first()
Run Code Online (Sandbox Code Playgroud)