我想在设置邮件之前测试我的代码是否正确设置了标题 我无法获取我在代码中设置的属性 - 我正在跟踪堆栈跟踪:
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2471'.
at com.ibm.mq.MQMessage.getProperty(MQMessage.java:5697)
at com.ibm.mq.MQMessage.getStringProperty(MQMessage.java:6952)
at com.ibm.mq.MQMessage.getStringProperty(MQMessage.java:6928)
........
这是简化测试代码:
@Autowired
MessageSender messageSender;
@Mock
MQAccessor mqAccessor;
@Test
public void headersCorrectlySet() throws MQException {
MQTopic topic = mock(MQTopic.class);
when(mqAccessor.getTopic(anyString())).thenReturn(topic);
messageSender.setHeadersAndSentMessage(new MyObject(...));
verify(topic).put(argThat(new ArgumentMatcher<MQMessage>() {
@Override
public boolean matches(Object o) {
MQMessage msg = (MQMessage)o;
return msg.getStringProperty("myProperty").equals("myValue"); // <-- error
}
}));
}
这是我在MessageSender中设置标头的方式:
msg.setStringProperty("myProperty", "myValue");
我想指出,实际上没有消息被发送到MQ,我嘲笑那部分。
setStringProperty(...)
的工作原理很奇怪,但相应的getStringProperty(...)
会引发异常。
在这种情况下应该如何测试代码?