gpt4 book ai didi

unit-testing - Mockito - 参数匹配器的无效使用

转载 作者:行者123 更新时间:2023-12-03 07:47:57 24 4
gpt4 key购买 nike

我有 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: Invalid use of argument matchers! ....

原因是由于 Mockito.any(MessageCreator.class) ,但是没有办法测试我的发送方法是否正在执行,而无需在 MessageCreator 中创建实际对象。

更新有没有办法检查我的 session.createObjectMessage(dialogueServiceResponse) 是否也被调用

最佳答案

我认为消息的其余部分告诉您问题是什么。当您对其中一个参数使用参数匹配器时,所有其他参数也必须使用参数匹配器:

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

关于unit-testing - Mockito - 参数匹配器的无效使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16458136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com