IBM MQ - 正确设置了测试标头。 getStringProperty()抛出异常

时间:2017-02-22 14:24:20

标签: java ibm-mq

我想在设置邮件之前测试我的代码是否正确设置了标题 我无法获取我在代码中设置的属性 - 我正在跟踪堆栈跟踪:

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(...)会引发异常。
在这种情况下应该如何测试代码?

0 个答案:

没有答案