Mam funkcję, która wykorzystuje bieżący czas do wykonywania niektórych obliczeń. Chciałbym wyśmiać go za pomocą mockito.Jak wyśmiać nową datę() w java przy użyciu Mockito
Przykładem klasy Chciałbym przetestować:
public class ClassToTest {
public long getDoubleTime(){
return new Date().getTime()*2;
}
}
Chciałbym coś takiego:
@Test
public void testDoubleTime(){
mockDateSomeHow(Date.class).when(getTime()).return(30);
assertEquals(60,new ClassToTest().getDoubleTime());
}
to możliwe, aby drwić, że? Nie chciałbym zmieniać "przetestowanego" kodu w celu przetestowania.
Dlaczego nie chcesz zmienić testowanego kodu? Kod, który jest bardziej sprawdzalny, jest generalnie luźniej powiązany ... dlaczego tego nie chcesz? – blank
możliwy duplikat [Override Java System.currentTimeMillis] (http://stackoverflow.com/questions/2001671/override-java-system-currenttimemillis) –
... i jeszcze coś - zmiana "przetestowanego" kodu jest łatwa - ty dostałem testy, aby powiedzieć, kiedy popełniłeś błąd - zmieniając nie testowany kod z drugiej strony ... potrzebujesz Michaela Feathersa kung foo;) – blank