ich den Code unten haben:Mockito Rückgabewert für bestimmte Objekte und werfen für alle anderen Objekt gleichen Typs
private SaveTransactionClient mockedTransactionClient;
private static Publisher publisher;
private static MyDTO mDTO1;
private static MyDTO mDTO2;
private static MyDTO mDTO3;
@BeforeClass
public void setUp() throws IOException {
TransactionResponse successResponse = new TransactionResponse();
successResponse.setDateRequest("2016-04-27 18:47:50");
successResponse.setResponse("OK");
successResponse.setTransactionNumber("1");
TransactionResponse failedResponse = new TransactionResponse();
failedResponse.setDateRequest("2016-04-27 18:47:50");
failedResponse.setResponse("Dublicate Transaction Error");
failedResponse.setTransactionNumber("1");
mDTO1 = new MyDTO(1, LocalDateTime.now(), 0);
mDTO2 = new MyDTO(2, LocalDateTime.now(), 0);
mDTO3 = new MyDTO(3, LocalDateTime.now(), 0);
mockedTransactionClient = mock(SaveTransactionClient.class);
when(mockedTransactionClient.sendTransactionRequest(mDTO1)).thenReturn(successResponse);
when(mockedTransactionClient.sendTransactionRequest(mDTO2)).thenReturn(failedResponse);
when(mockedTransactionClient.sendTransactionRequest(mDTO3)).thenThrow(new IOException());
when(mockedTransactionClient.sendTransactionRequest(any(MDTO.class))).thenThrow(new IOException());
publisher = new publisherImpl(mockedTransactionClient);
}
Die eigentlichen Tests sind
@Test
public void TestOnlyExceptionalPublishing() {
BlockingQueue<MDTO> mDTOs = new LinkedBlockingQueue<>(Arrays.asList(mDTO3));
assertEquals(mDTOs.size(), 1);
List<MDTO> successful = publisher.publish(wDTOs);
assertEquals(successful.size(), 0);
}
@Test
public void TestOneSuccessContainsExceptionalPublishing() {
BlockingQueue<MDTO> mDTOs = new LinkedBlockingQueue<>(Arrays.asList(mDTO3,mDTO1, mDTO2));
assertEquals(mDTOs.size(), 3);
List<MDTO> successful = publisher.publish(mDTOs);
assertEquals(successful.size(), 1);
}
Nun ist die MDTO
ist unveränderlich und die Art und Weise Die publisher.publish(mDTO)
funktioniert ist, dass auf Ausnahme erhöht einen "Wiederholungen" Zähler in MDTO
und versuchen Sie es bis zu 3 mal. Wenn der Zähler inkrementiert wird, wird ein neuer MDTO
generiert, der mit der Antwort nicht, die von Mockito stubbed ist, ein Problem für mich erstellt. Ich fügte die any
hinzu, aber dies macht die anderen Tests fehlgeschlagen, da es für alle und nicht für andere außer für die Objekte, die ich bereits geliefert habe, wirft.
Gibt es eine anyOther Art der Art, dies in Mockito zu tun?
Es sagt über void-Methode stechend. Ich möchte diktieren, was Mockito zurückgeben sollte, wenn das Methodenargument der verspotteten Klasse nicht eines der drei ist, die ich bereits angegeben habe. – idipous
lesen Sie das Beispiel erneut, im verknüpften Dokument, was Sie zurückgeben * wird zurückgegeben * –
Ja Ihr Beispiel macht es klarer wird es jetzt versuchen – idipous