Подтвердить что ты не робот

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

У меня есть тест 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) также вызывается

4b9b3361

Ответ 1

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

Mockito.verify(mockTemplate, Mockito.times(1)).send(
    Mockito.eq("appointment.queue"), 
    Mockito.any(MessageCreator.class));

Ответ 2

Я думаю, что вы не можете использовать сопоставители аргументов вне заглушки. Я также получил ту же ошибку, но когда я возвращаюсь, мне пришлось сделать новую string() вместо Mockito.anyString() и ошибка исчезнет. Пример:

Mockito.when(mockedBean.mockedMethod(Mockito.anyString(), 
                                     Mockito.anyInt(),
                                     Mockito.anyInt(),
                                     Mockito.anyInt(),
                                     Mockito.anyBoolean())).thenReturn(new String());