Jestによるテスト実行時のタイムゾーンを固定する
タイムゾーンによるテストへの影響
Jestを使って現在時刻の表示処理のようなテストをする場合、タイムゾーンが問題となるケースがあります。これは、開発に使うPCのタイムゾーンと、テストを実行するCIのタイムゾーンが異なるケースがあるためです。
例えば、開発用マシンは日本標準時(UTC+9)になっているのに対し、CircleCIやTravisCIなどのタイムゾーンがUTC+0だと、テストで得られる結果が異なり、どちらか一方で行われたテストが失敗することがあります。
Jestのテスト実行時のタイムゾーン指定方法
Jestでテストを実行する際に、環境に依存することなく明示的にタイムゾーンを指定する場合は、 globalSetup で process.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の場合はコンテナのタイムゾーンを指定する方法 もあるので、このアプローチを使うこともできます。
参考
Author And Source
この問題について(Jestによるテスト実行時のタイムゾーンを固定する), 我々は、より多くの情報をここで見つけました https://qiita.com/Tsuyoshi84/items/e3d79d9842280549723c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .