10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Jestによるテスト実行時のタイムゾーンを固定する

Posted at

タイムゾーンによるテストへの影響

Jestを使って現在時刻の表示処理のようなテストをする場合、タイムゾーンが問題となるケースがあります。これは、開発に使うPCのタイムゾーンと、テストを実行するCIのタイムゾーンが異なるケースがあるためです。

例えば、開発用マシンは日本標準時(UTC+9)になっているのに対し、CircleCIやTravisCIなどのタイムゾーンがUTC+0だと、テストで得られる結果が異なり、どちらか一方で行われたテストが失敗することがあります。

Jestのテスト実行時のタイムゾーン指定方法

Jestでテストを実行する際に、環境に依存することなく明示的にタイムゾーンを指定する場合は、 globalSetupprocess.env.TZ を指定すれば良いです。具体的には以下のように設定します。

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

(上は package.json を例としていますが、 jest.config.js を使用している場合も設定方法は同様です)

jest-global-setup.js
module.exports = async () => {
  process.env.TZ = 'Asia/Tokyo'; // 固定したい任意のタイムゾーンを指定
};

その他の方法

なお、蛇足ではありますが、 CircleCIの場合はコンテナのタイムゾーンを指定する方法 もあるので、このアプローチを使うこともできます。

参考

10
4
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
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?