No se burle, sino que presente un método que puede simular que obtiene las fechas. Algo como esto:
interface Utility {
Date getDate();
}
Utilities implements Utility {
public Date getDate() {
return Calendar.getInstance().getTime();
}
}
A continuación, se puede inyectar esto en su clase o simplemente utilizar una clase de ayuda con un montón de métodos estáticos con un método de carga para la interfaz:
public class AppUtil {
private static Utility util = new Utilities();
public static void load(Utility newUtil) {
this.util = newUtil;
}
public static Date getDate() {
return util.getDate();
}
}
Luego, en su solicitud código:
private void doSomething() {
Date today = AppUtil.getDate();
....
}
Puede cargar una interfaz de simulación en sus métodos de prueba.
@Test
public void shouldDoSomethingUseful() {
Utility mockUtility = // .. create mock here
AppUtil.load(mockUtility);
// .. set up your expectations
// exercise the functionality
classUnderTest.doSomethingViaAPI();
// ... maybe assert something
}
Ver también Should you only mock types you own? y Test smell - everything is mocked
Esa línea no se pudo compilando! – adarshr
¿Es 'today' un miembro de la clase (campo) o una variable local dentro de un método? –
variable local dentro de un método – Randomize