[英]AssertJ casting an extracted field to a Map
我有一个带有MessageHeaders
字段的Message
对象。 MessageHeaders
类实现Map<String, Object>
。 我想断言我设置了特定的标题。 我无法启动MapAssert
方法。
这是我想要完成的:
assertThat(actual)
.extracting(Message::getHeaders) // This returns AbstractObjectAssert though
.containsKeys("some key"); // Not available
这里的Message
和MessageHeaders
类要清楚:
public class Message {
private MessageHeaders headers;
// getter
}
public class MessageHeaders implements Map<String, Object>, Serializable {
// methods
}
为了使用MapAssert
你需要直接提取MessageHeaders
场和灰提取asInstanceOf
:
assertThat(actual)
.extracting("headers")
.asInstanceOf(InstanceOfAssertFactories.MAP)
.containsKey("some key");
AssertJ Core 3.14.0 提供了一个新的extracting()
来支持直接转换,所以你可以这样写:
assertThat(actual)
.extracting(Message::getHeaders, as(InstanceOfAssertFactories.MAP))
.containsKey("some key");
请注意, as()
是一种可选的语法糖,用于提高可读性。
我想出的解决方案/解决方法是断言地图本身而不是使用提取。
assertThat(actual.getHeaders())
.containsKey("some key");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.