[英]AssertJ check if JSONArray contains a map with an entry with given key and value
[英]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
是输入键,而player1
和player2
是内部列表的预期内容,可以这样写:
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.