C'è un modo per avere un metodo stub restituito oggetti diversi nelle chiamate successive? Mi piacerebbe farlo per testare risposte non determinabili da un ExecutorCompletionService
. per testare che indipendentemente dall'ordine di restituzione dei metodi, il risultato rimane costante.Utilizzo di Mockito con più chiamate allo stesso metodo con gli stessi argomenti
Il codice che sto cercando di testare assomiglia a questo.
// Create an completion service so we can group these tasks together
ExecutorCompletionService<T> completionService =
new ExecutorCompletionService<T>(service);
// Add all these tasks to the completion service
for (Callable<T> t : ts)
completionService.submit(request);
// As an when each call finished, add it to the response set.
for (int i = 0; i < calls.size(); i ++) {
try {
T t = completionService.take().get();
// do some stuff that I want to test
} catch (...) { }
}
oooh, pulito. i documenti parlano di Answer come solo per vuoto, ma questo è fantastico! – Emma
Questo in realtà aiuta molto quando si sopprimono metodi void che devono fornire risposte ai callback, in cui non è possibile utilizzare un 'thenReturn (val1, val2, ...)' più semplice. Grazie molto! –
Come un'altra opzione per la risposta di cui sopra, è possibile anche concatenare insieme metodi DoAnswer. Quindi '(someMock.someMethod()). DoAnswer (new Answer1()). DoAnswer (new Answer2());' –