Mockito - Недопустимое использование аргументов

17

У меня есть тест Junit, который тестирует отправку сообщений jms. Я использую Spring jmsTemplate для этого. Здесь, как и в следующем коде, я хочу проверить, вызвал ли шаблон JMS сообщение отправки независимо от того, что это такое в значениях передаваемых параметров возбуждения.

мой метод издателя использует метод jmsTemplate для отправки, который выглядит следующим образом.

jmsTemplate.send(jmsQueueProperties.getProperty(key), new MessageCreator()
{
    public Message createMessage(Session session) throws JMSException
    {
        ObjectMessage obj = session.createObjectMessage(dialogueServiceResponse);
        return obj;
}
});

в моих тестах.

JmsTemplate mockTemplate = Mockito.mock(JmsTemplate.class);
...
publisher.publishServiceMessage(response);
....
Mockito.verify(mockTemplate, 
    Mockito.times(1)).send("appointment.queue", 
        Mockito.any(MessageCreator.class));

Но когда в выполнении я получаю

  

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: недопустимое использование аргументов!   ....

Причина связана с Mockito.any (MessageCreator.class) , но нет способа проверить, что мой метод отправки выполняется, не создавая фактического объекта в MessageCreator.

Обновление И есть ли способ проверить мой session.createObjectMessage (dialogServiceResponse) также вызывается

    
задан kuhajeyan 09.05.2013 в 11:05
источник

1 ответ

42

Я думаю, что остальная часть сообщения говорит вам, в чем проблема. Когда вы используете аргумент-аргумент для одного из аргументов, все остальные аргументы должны также использовать сопоставление аргументов:

Mockito.verify(mockTemplate, Mockito.times(1)).send(
    Mockito.eq("appointment.queue"), 
    Mockito.any(MessageCreator.class));
    
ответ дан JB Nizet 09.05.2013 в 12:35
источник