Ho utilizzato Java 8 per alcuni mesi e ho iniziato a utilizzare le espressioni Lambda, che sono molto convenienti in alcuni casi. Tuttavia, mi capita spesso di incontrare alcuni problemi per testare il codice che utilizza un Lambda.Codice di test unitario con Java 8 Lambdas
prendere come esempio il seguente pseudo-codice:
private Bar bar;
public void method(int foo){
bar.useLambda(baz -> baz.setFoo(foo));
}
Un approccio potrebbe essere quello di verificare solo la chiamata sulla barra
verify(bar).useLambda(Matchers.<Consumer<Baz>>.any());
Ma, così facendo, non prova Il codice di Lambda.
Si noti inoltre che non sono in grado di sostituire il Lambda con un riferimento metodo e l'uso metodo:
bar.useLambda(This::setFooOnBaz);
Perché io non avrò il foo su quel metodo. O almeno questo è quello che penso.
Hai già avuto questo problema? Come posso testare o refactoring il mio codice per testarlo correttamente?
Modifica
Da quello che sto codifica è un test di unità, non voglio creare un'istanza bar, e userò un mock invece. Quindi non sarò in grado di verificare solo la chiamata baz.setFoo
.
Avevi ragione quando hai detto che il mio lambda attuale è un po 'più complicato di un set, ma è ancora abbastanza semplice da considerare che non si romperà. Dopotutto, forse sto solo cercando di testare il 100% del codice, e questo è il problema alla radice. Grazie! – Fdiazreal