我有測試jms消息發送的Junit測試。我正在使用Spring jmsTemplate來做到這一點。在這裏,我在下面的代碼中,我想檢查JMS模板是否調用了發送消息,而不管它傳遞的實參參數的值是什麼。Mockito - 參數匹配器的無效使用
我的出版商方法使用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(dialogueServiceResponse)獲取調用以及
模擬和驗證不能很好地協同工作。你需要的是爲你希望運行這些驗證的類創建一個間諜對象,而不是僅僅嘲笑它。 – 3xil3 2013-05-09 10:14:10