laravel 单元测试设置模拟时间

Posted 白桂任的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel 单元测试设置模拟时间相关的知识,希望对你有一定的参考价值。

 

有时候我们需要对一些超时的逻辑进行测试,需要等待一定的时间来验证超时逻辑是否生效。

 

Carbon 库提供了 setTestNow 方法来设置一个虚拟的当前时间

使用这个特性的前提是:我们的待测试代码利用 Carbon::now() 来获取当前时间(这种情况获取到的当前时间是我们设置的一个虚拟的当前时间)。

public function test_items_can_expire()
    {
        Carbon::setTestNow(Carbon::now());
        $store = new ArrayStore;

        $store->put(‘foo‘, ‘bar‘, 10);
        Carbon::setTestNow(Carbon::now()->addSeconds(10)->addSecond());
        $result = $store->get(‘foo‘);

        $this->assertNull($result);
        Carbon::setTestNow(null);
    }

 

以上是关于laravel 单元测试设置模拟时间的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 5.2 单元测试中模拟作业

在单元测试中模拟时找不到 Laravel 外观类

在laravel 5.1单元测试中嘲笑hasMany关系

Laravel 中的单元测试:设置当前经过身份验证的用户时出错

使用 Mock 对 Laravel 5 Mail 进行单元测试

模拟数据库查询 laravel 嘲弄