Я не могу понять, как установить дату / время, используемые классом ClockMock
.В документации:
Кроме того, функция date()
подвергается проверке, поэтому она использует проверенное время, если отметка времени не указана.Другие функции с необязательным параметром timestamp, который по умолчанию равен time()
, будут по-прежнему использовать системное время вместо смоделированного времени.
Это то, что я пытался сделать:
class Foo
{
public function now(): string {
return date('Y-m-d');
}
}
/**
* @covers Foo
* @group time-sensitive
*/
class FooTest extends TestCase
{
/**
* @covers Foo::now
*/
public function testNow(): void {
ClockMock::register(Foo::class);
ClockMock::withClockMock('2019-01-01');
$f = new Foo();
static::assertSame('2019-01-01', $f->now());
}
}
Утверждение по-прежнему не выполняется, фактическая дата является сегодняшней датой.
Я даже пытался вызвать date('Y-m-d')
внутри утверждения в тестовом классе, но он по-прежнему возвращает сегодняшнюю дату вместо фиктивной даты.
Как установить фиктивную дату?