I have a function that uses the current time to make some calculations. I’d like to mock it using mockito.
An example of the class I’d like to test:
public class ClassToTest {
public long getDoubleTime(){
return new Date().getTime()*2;
}
}
I’d like something like:
@Test
public void testDoubleTime(){
mockDateSomeHow(Date.class).when(getTime()).return(30);
assertEquals(60,new ClassToTest().getDoubleTime());
}
Is it possible to mock that? I wouldn’t like to change the “tested” code in order to be tested.
The right thing to do is to restructure your code to make it more testable as shown below.
Restructuring your code to remove the direct dependency on Date will allow you to inject different implementations for normal runtime and test runtime: