Jag stötte på en riktig fuling idag när jag skulle skriva ett test likt det nedan. Hittade “lösningen” på mailinglistan efter att ha läst ett par buggar/feature requests.
Som jag förstår det går det inte att lösa pga Javas Type Inference i metodanrop. I exemplet nedan kan raden med when
aldrig fungera utan man får gå på doReturn
istället.
package demo;
import static java.util.Arrays.asList;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Collection;
import org.junit.Test;
public class GenericCollectionStubTest {
@Test
public void onGoingStubFails() {
Car bmw = mock(Car.class);
Reseller reseller = mock(Reseller.class);
Collection cars = asList(bmw);
//when(reseller.getModels()).thenReturn(cars);
doReturn(cars).when(reseller).getModels();
}
}
Raden med when
misslyckas med följande meddelande:
The method thenReturn(Collection<capture#1-of ? extends Vehicle>) in the type OngoingStubbing<Collection<capture#1-of ? extends Vehicle>> is not applicable for the arguments (Collection<capture#2-of ? extends Vehicle>)