【发布时间】:2019-03-31 01:28:41
【问题描述】:
我不知道如何设置 ClockMock 类使用的日期/时间。在文档中:
另外,函数
date()被模拟,因此如果没有指定时间戳,它会使用模拟时间。具有可选时间戳参数且默认为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'),但它仍然返回今天的日期而不是模拟的日期。
如何设置模拟日期?
【问题讨论】: