繁体   English   中英

使用 AssertJ 检查单元测试中 Map 条目中的列表

[英]Check a list inside a Map entry in a unit test using AssertJ

我想使用 AssertJ 库检查单元测试中 Map 值内的列表:

public class Group {
    List<Player> players = new ArrayList<>();

    public Group(List<Player> players) {
        this.players.addAll(players);
    }
}
Map<Character, Group> generatedGroups = receiveFromAnyMethod();

在 Map 里面我有这个:

A: Group A -> players(playerA, playerB)

我如何检查组内的列表? 我想我应该使用提取、flatExtracting 方法,但我不知道如何使用。

for (Map.Entry<Character, Group> entry : generatedGroups.entrySet()) {
    
    List<Player> players = entry.getValue().getPlayers();
    // Do your check here
}

假设character是输入键,而player1player2是内部列表的预期内容,可以这样写:

assertThat(generatedGroups.get(character))
  .extracting("players", as(InstanceOfAssertFactories.LIST))
  .containsExactly(player1, player2);

或类型安全,以防Group提供getPlayers()

assertThat(generatedGroups.get(character))
  .extracting(Group::getPlayers, as(InstanceOfAssertFactories.LIST))
  .containsExactly(player1, player2);

参考:

以下是与特定用例略有不同的答案。

我们想在响应 object 中断言 header 的存在。下面是使用 AssertJ 断言来验证标头ResponseEntity.ok().contentType(APPLICATION_JSON)的单元测试

assertThat(response).hasFieldOrPropertyWithValue("statusCode", OK)
          .extracting("headers")
          .isInstanceOf(HttpHeaders.class)
          .hasFieldOrPropertyWithValue("Content-Type",List.of(APPLICATION_JSON_VALUE));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM