Solución:
Recientemente se me ocurrió otra solución que es excelente si está utilizando espacios de nombres PHP 5.3. Puede implementar una nueva función time () dentro de su espacio de nombres actual y crear un recurso compartido donde establece el valor de retorno en sus pruebas. Entonces, cualquier llamada no calificada a time () usará su nueva función.
Para leer más, lo describí en detalle en mi blog.
Para aquellos de ustedes que trabajan con Symfony (> = 2.8): El puente PHPUnit de Symfony incluye una función ClockMock que anula los métodos integrados. time
, microtime
, sleep
y usleep
.
Ver: http://symfony.com/doc/2.8/components/phpunit_bridge.html#clock-mocking
Descargo de responsabilidad: escribí esta biblioteca.
Puede simular tiempo para la prueba usando Clock de ouzo-goodies.
En código, use simplemente:
$time = Clock::now();
Luego en las pruebas:
Clock::freeze('2014-01-07 12:34');
$result = Class::getCurrDate();
$this->assertEquals('2014-01-07', $result);