我有一个Message带字段的对象MessageHeaders。该类MessageHeaders实现了一个Map<String, Object>. 我想断言我设置了特定的标头。我无法提出MapAssert方法。这是我想要完成的:assertThat(actual) .extracting(Message::getHeaders) // This returns AbstractObjectAssert though .containsKeys("some key"); // Not available 这是要清楚的Message和类:MessageHeaderspublic class Message { private MessageHeaders headers; // getter}public class MessageHeaders implements Map<String, Object>, Serializable { // methods}
3 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
为了使用,MapAssert您需要直接提取MessageHeaders字段并将提取内容转换为asInstanceOf:
assertThat(actual)
.extracting("headers")
.asInstanceOf(InstanceOfAssertFactories.MAP)
.containsKey("some key");
汪汪一只猫
TA贡献1898条经验 获得超8个赞
AssertJ Core 3.14.0 提供了一个新的extracting()
支持直接转换的方式,所以你可以这样写:
assertThat(actual) .extracting(Message::getHeaders, as(InstanceOfAssertFactories.MAP)) .containsKey("some key");
请注意,这as()
是一个可选的语法糖,可提高可读性。
宝慕林4294392
TA贡献2021条经验 获得超8个赞
我想出的解决方案/解决方法是断言地图本身而不是使用提取。
assertThat(actual.getHeaders()) .containsKey("some key");
添加回答
举报
0/150
提交
取消