LoginSignup
5
2

More than 1 year has passed since last update.

コンテナ環境でReactユニットテストを実行する際のタイムゾーン設定にハマった話(Jest)

Posted at

目的

Reactの開発環境をDockerに移行した際、jestでのユニットテストが通らなくなりました。
Dockerで特に何も設定せずにUbuntuを使用していたためb、タイムゾーンがUTCとなっていたことが原因でした。
なので、今回はコンテナ自体のタイムゾーンは変えずに、テスト実行時のタイムゾーンを固定する方法の備忘録になります。

手順

ここでは3つの方法を記載します。
どれをとっても結果は同じなので、お好みで大丈夫です。

方法1. Jest実行環境の設定ファイルにタイムゾーンを指定する

こちらの記事を参考にします。

package.jsonと同階層にJestの設定ファイルjest-global-setup.jsを作成し、タイムゾーンを記述します。

jest-global-setup.js
module.exports = async () => {
  process.env.TZ = 'Asia/Tokyo';
};

package.jsonのjest定義に以下を追加します。

package.json
{
  "jest": {
    "globalSetup": "./jest-global-setup.js"
  }
}

方法2. テスト実行時にタイムゾーンを指定する

yarn testを行う際に明示的にタイムゾーンを指定します。

# TZ=Asia/Tokyo yarn test

方法3. package.jsonのtest定義にタイムゾーンを指定する

yarn testによって実行されるスクリプトコマンドに明示的にタイムゾーンを指定します。

package.json
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "TZ=Asia/Tokyo react-scripts test", // タイムゾーンを指定

まとめ

開発環境をDockerに移す際にはここら辺も気を付けないといけませんね。。
個人的には3番目の方法がサクッとできて、かつ一度設定してやれば済むのでオススメかなと思います。

5
2
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
5
2