Модульное тестирование JMS - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть код, который выглядит следующим образом:

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. Лог c для buildMessageForObject фактически встроен, но если бы его не было, он был бы закрытым. Что я хотел бы сделать, это сделать утверждения для строки полезной нагрузки сообщения. Было бы неплохо, если бы в Spring JMSTemplate API было что-то вроде jmsTemplate.sendTextMessage(String text), чтобы я мог проводить проверки на поддельном jmsTemplate в моих тестах, но, кажется, слишком много уровней косвенности между мной и сообщением, и я не вижу ничего в API для JMSTemplate или MessageCreator, который, очевидно, помогает мне реструктурировать его, чтобы сделать его тестируемым. Я использую JUnit и Mockito, но я не знаю, каким образом Mockito позволил бы мне указать поведение созданных MessageCreator.

Заранее благодарен за любую помощь.

...