Der Versuch, eine Klasse mit 2 möglichen Aufruf/Rückweg mit benutzerdefinierten Matcher stub ... lief ein Interesse Problem. HierMockito Stubbing zählen als Aufruf
ist ein Test, den ich schrieb zu illustrieren ...
Dies schwierig sein könnte, zu implementieren, aber ich würde das erste ArgumentMatcher
erwartet wird nicht aufgerufen, wenn die zweite when(...).thenReturn(...)
Aber laufen Sie den Code unten druckt foobar
auf stdout. Können wir etwas gegen dieses Verhalten tun? Oder bin ich mit dem falschen Muster, indem Sie versuchen eine einzige Mock mit mehreren benutzerdefinierten ArgumentMatcher
FYI Stub - powermock
ist auf meinem Classpath für andere Tests (nicht sicher, ob das Fragen, aber ich sehe in dem Stack-Trace)
import org.junit.Test;
import org.mockito.ArgumentMatcher;
import java.io.File;
import java.io.FilenameFilter;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class MyTest {
@Test
public void name() throws Exception {
File file = mock(File.class);
when(file.list(argThat(new ArgumentMatcher<FilenameFilter>() {
@Override
public boolean matches(Object argument) {
System.out.println("foobar");
return 1 + 1 >2;
}
}))).thenReturn(null);
// at this point, mockito will attempt to run the previous matcher, treating this stub code as invocation ... and printing out 'foobar'
when(file.list(argThat(new ArgumentMatcher<FilenameFilter>() {
@Override
public boolean matches(Object argument) {
System.out.println("barbar");
return true;
}
}))).thenReturn(null);
}
}
EDIT hinzugefügt Kommentare
vielen Dank dafür – echen