AssertJ - 检查 class 后继续流畅的断言

AssertJ - continue with fluent assertions after checking class

假设我有一个 Map<String, Action>,我会这样:

    assertThat( spyActionMap.get( "a" ) ).isInstanceOf( Action.class );

...通过。现在我想检查得到的 Action 是不是正确的:

    assertThat( spyActionMap.get( "a" ) ).isInstanceOf( Action.class ).getValue( Action.NAME ).isEqualTo( "Go crazy" );

... 不编译,不足为奇。这种事情有什么办法吗?

您可以尝试 isInstanceOfSatisfying 并在 Consumer:

中指定您的断言
Object yoda = new Jedi("Yoda", "Green");
Object luke = new Jedi("Luke Skywalker", "Green");

Consumer<Jedi> jediRequirements = jedi -> {
   assertThat(jedi.getLightSaberColor()).isEqualTo("Green");
   assertThat(jedi.getName()).doesNotContain("Dark");
};

assertThat(yoda).isInstanceOfSatisfying(Jedi.class, jediRequirements);
assertThat(luke).isInstanceOfSatisfying(Jedi.class, jediRequirements);