gpt4 book ai didi

php - 在 Laravel 中测试时如何模拟 time() 函数?

转载 作者:行者123 更新时间:2023-11-28 20:37:29 30 4
gpt4 key购买 nike

我正在使用 Laravel 做一个数学竞赛项目。项目中的所有 Controller 方法都使用了大量的 time() 函数。

根据当前时间是否在比赛直播时间之间向用户返回问题。

在编写功能测试和单元测试时,如何在 Controller 中模拟 time() 函数,以便在为项目运行测试时设置我想要的时间?

最佳答案

您可以通过两种方式与时间进行交互:

选项 1:使用 Laravel 内置函数

Note: Laravel Version >= 8

最新版本的 Laravel 有很好的与时间交互的方法:

$this->travel(5)->milliseconds();
$this->travel(5)->seconds();
$this->travel(5)->minutes();
$this->travel(5)->hours();
$this->travel(5)->days();
$this->travel(5)->weeks();
$this->travel(5)->years();

// Travel into the past...
$this->travel(-5)->hours();

// Travel to an explicit time...
$this->travelTo(now()->subHours(6));

// Return back to the present time...
$this->travelBack();

引用:https://laravel.com/docs/mocking#interacting-with-time

选项 2:碳法

Carbon::setTestNow();

或设置任何日期

$knownDate = Carbon::create(2001, 5, 21, 12);
Carbon::setTestNow($knownDate); // Or any dates
echo Carbon::now(); // will show 2001-05-21 12:00:00

引用:https://laraveldaily.com/carbon-trick-set-now-time-to-whatever-you-want/

关于php - 在 Laravel 中测试时如何模拟 time() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48849090/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com