首页 > 解决方案 > 单元测试 JMS 有效负载

问题描述

我有一些如下所示的代码:

class MyClass {
    private JmsTemplate messageSender;

    public void doStuff(Domain object domainObject){
       ... //other stuff
       updateClient(domainObject);
    }
    ...
    private void updateClient(DomainObject domainObject){
        final String payload = buildMessageForObject(domainObject);
        messageSender.send(new MessageCreator() {
            public Message createMessage(Session sn) throws JMSException {
               return sn.createTextMessage(payload);
            }
        });
    }
}

我的 JMS 模板由 Spring 框架自动装配。for 的逻辑buildMessageForObject实际上是内联的,但如果不是,它将是私有的。我想做的是对消息有效负载字符串进行断言。如果 Spring JMSTemplate API 有类似的东西会很好,jmsTemplate.sendTextMessage(String text)这样我就可以jmsTemplate在我的测试中对模拟对象进行验证,但是我和消息之间似乎有太多的间接层,而且我在JMSTemplate 或 MessageCreator 的 API 显然可以帮助我对其进行重组以使其可测试。我正在使用 JUnit 和 Mockito,但我不知道 Mockito 会允许我指定 created 的行为MessageCreator

提前感谢您的帮助。

标签: javatestingmockitojmsspring-jms

解决方案


推荐阅读