0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPのUnitテストで、現在日時を自由に設定する

Last updated at Posted at 2024-11-30

プロダクションコード側で、new DateTime() の代わりに Chronos を使って日付を生成すると、テストの中で、 Chronos::setTestNow('2020-03-21'); を使って、テストの現在日時を設定できると教えてもらいました。これは便利!

例:

  • プロダクションコード
function isInPeriod(){
        // 期間内判定
        return Chronos::now()->between(
            Chronos::parse(START_DATE), 
            Chronos::parse(END_DATE),
            true
        );
    }
  • テストコード
public function testIsInPeriod($testName, $testInput, $runOption, $expectedResult)
    {
        
        // 現在日時をテストケースに合わせて変更
        Chronos::setTestNow('2024-12-20 08:59:59');

        // テスト実行
       
        // テスト結果検証
      }  

余談

Chronosには、日付比較や日付の差分を求めるメソッドも色々あるようです。言語によって日付の計算は面倒な時があるので、助かります。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?