概要
Laravelでテスト書いていた時に、 Carbon::setTextNow(now())
してもCarbonImmutable::now()
の結果が固定されなかった。
発生バージョン(他のバージョンでも出るはず)
Laravel Framework 10.17.1
原因
Carbon::setTestNow
と同じインターフェース実装が2箇所あり
\Illuminate\Support\Carbon::setTestNow
\Carbon\Carbon::setTestNow
useしているネームスペースが間違っていただけというミスでした。
IDEのサジェストから一番上のを適当に選んでいたので気づけませんでした...
詳細
\Illuminate\Support\Carbon::setTestNow のコード見て「あ・・・」ってなりました
namespace Illuminate\Support;
use Carbon\Carbon as BaseCarbon;
use Carbon\CarbonImmutable as BaseCarbonImmutable;
...
class Carbon extends BaseCarbon
...
public static function setTestNow($testNow = null)
{
BaseCarbon::setTestNow($testNow);
BaseCarbonImmutable::setTestNow($testNow);
}