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>)
