あのぞんブログ

テストで TimeZone を固定する

2020-07-01

日時の文字列をテストに使っているとき GitHub Actions でつまずいたのでメモ。

javascript の Date は自動でローカルのタイムゾーンで文字列化されます。

    - Snapshot
    + Received

      Array [
    -   2020-03-22T13:22:00.000Z,
    -   2020-03-22T13:22:00.000Z,
    +   2020-03-22T22:22:00.000Z,
    +   2020-03-22T22:22:00.000Z,

環境変数 TZ を指定して実行する

{
  "scripts": {
    "test": "TZ=Asia/Tokyo jest"
  }
}

他の解決策

unix timestamp でテスト比較する。(テストコードが少しわかりにくくなる)

その他

最初 GitHub Actions 側で指定していたけど、yarn test 側で指定したほうが理想的。

      - run: TZ=Asia/Tokyo yarn test

anozon JavaScript とアニメ好き Web エンジニア。Twitter

© 2020 あのぞんびより All Rights Reserved