12/28追記
セッションが切れちゃうので何らかの対策を講じる必要がある
- 例: LIFETIMEを1000年くらいにする
参考: ミドルウェアでtimetravelするやつ
[https://nextat.co.jp/staff/archives/245:embed:cite]
本格的
というかこれでいい これがいい
モチベーション
-
時刻が関わる機能の自動テストをつくりたい
- PHPだけのテストなら
Carbon::testNow()
を呼ぶだけ - E2Eテストの場合、外(ブラウザ)から現在時刻を設定する口を開ける必要がある
- PHPだけのテストなら
つくった
[https://github.com/wand2016/timetravel-sample:embed:cite]
-
なんやかんやで
Carbon::setTestNow()
を環境別にラップするだけになった- 認証・認可後に入るコントローラアクション内でのタイムトラベルなので、ログインが解けちゃったりすることを考えなくていい
-
Laravelのタイムトラベリングがメインのはずだったのに、E2E自動テスト環境構築のほうが勉強になった説
- jest + puppeteerは前からやってた
- TypeScriptが加わった
振り返り
結論、良くない
- コントローラアクションが散らかる
- リクエストパラメータだけでタイムトラベルすると、PRGパターンが特に散らかる
- cookieにタイムトラベル先日時を持ちたくなる
- そうなると、もはやMiddlewareで統一的に処理したほうがいい