LoginSignup
0
0

Laravelで`Carbon::setTestNow`がCarbonImmutableに適用されない

Posted at

概要

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);
    }
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0