【Jest】タイムゾーンをモックする

ローカルタイムゾーンをモックするためのライブラリである「timezone-mock」を用いることで、
テストごとにローカルタイムゾーンを差し替えて実行します。

手順

以下のコマンドを実行して、必要なパッケージをインストールする。

npm install -D timezone-mock

ファイルを作成し、以下のように編集する。

import timezoneMock from 'timezone-mock';
import { getNowDate } from '../service/dateService';

describe('getNowDate: 現在時刻を文字列として取得する', () => {
    beforeEach(() => {
        jest.useFakeTimers();
    });

    afterEach(() => {
        jest.useRealTimers();
    });

    test("タイムゾーン:JSTで実行すると、文字列'20230101000000'を返す", () => {
        // 現在時刻を2023年1月1日00:00:00(JST)として、JSTでの現在時刻を取得する
        timezoneMock.register('Etc/GMT-9');
        const mockDate = new Date('2023-01-01T00:00:00');
        jest.setSystemTime(mockDate);
        expect(getNowDate()).toBe('20230101000000');
        timezoneMock.unregister();
    });

    test("タイムゾーン:UTCで実行すると、文字列'20230101090000'を返す", () => {
        // 現在時刻を2023年1月1日00:00:00(UTC)として、JSTでの現在時刻を取得する
        timezoneMock.register('UTC');
        const mockDate = new Date('2023-01-01T00:00:00');
        jest.setSystemTime(mockDate);
        expect(getNowDate()).toBe('20230101090000');
        timezoneMock.unregister();
    });
});

参考

タイトルとURLをコピーしました