ich JUnit-Test, der Tests jms Nachricht sendet. Ich verwende Spring jmsTemplate, um dies zu tun. Hier möchte ich wie im folgenden Code prüfen, ob die JMS-Vorlage send-Nachricht aufgerufen hat, unabhängig davon, was in den Werten der tatsächlich übergebenen Parameter steht.Mockito - Unerlaubte Verwendung von Argumente Matcher
mein Verleger Methode verwendet das die jmsTemplate Verfahren wie innen folgt aussieht zu senden ..
jmsTemplate.send(jmsQueueProperties.getProperty(key), new MessageCreator()
{
public Message createMessage(Session session) throws JMSException
{
ObjectMessage obj = session.createObjectMessage(dialogueServiceResponse);
return obj;
}
});
in meinen Tests ..
JmsTemplate mockTemplate = Mockito.mock(JmsTemplate.class);
...
publisher.publishServiceMessage(response);
....
Mockito.verify(mockTemplate,
Mockito.times(1)).send("appointment.queue",
Mockito.any(MessageCreator.class));
Aber wenn in der Ausführung i erhalten
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Ungültige Verwendung von Argument Matcher! ....
Ursache ist aufgrund Mockito.any (MessageCreator.class), aber es ist eine Möglichkeit, meine Sendemethode zu testen ausgeführt wird immer in dem MessageCreator nicht da ein tatsächliches Objekt ohne zu schaffen.
aktualisieren Und gibt es eine Möglichkeit, meine session.createObjectMessage (dialogueServiceResponse) zu überprüfen ist
auch
Mock und Verify funktionieren nicht gut zusammen. Was Sie brauchen, ist ein Spionageobjekt für die Klasse zu erstellen, mit der Sie diese Überprüfungen durchführen möchten, anstatt nur zu spotten. – 3xil3