为了账号安全,请及时绑定邮箱和手机立即绑定

AssertJ 将提取的字段转换为 Map

AssertJ 将提取的字段转换为 Map

手掌心 2023-06-14 16:41:26
我有一个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");


查看完整回答
反对 回复 2023-06-14
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

AssertJ Core 3.14.0 提供了一个新的extracting()支持直接转换的方式,所以你可以这样写:

assertThat(actual)
  .extracting(Message::getHeaders, as(InstanceOfAssertFactories.MAP))
  .containsKey("some key");

请注意,这as()是一个可选的语法糖,可提高可读性。


查看完整回答
反对 回复 2023-06-14
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

我想出的解决方案/解决方法是断言地图本身而不是使用提取。

assertThat(actual.getHeaders())
  .containsKey("some key");


查看完整回答
反对 回复 2023-06-14
  • 3 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信