2020/07/06

Jestで時刻を固定化する方法


背景


Node.jsで動作するサーバーアプリのユニットテストコードをJestで作成するため、Jestの使用方法について調査した。

記事の目的


Jestで時刻を固定する

Date関数 / moment関数


ここでは、Date関数 / moment関数について記載する。

Date関数とは

Date関数は、Javascript標準の時刻モジュールである。現在時刻の取得などが行える。

moment関数とは

moment関数は、Date関数のラッパーであり、時刻差の計算などの機能が付与されている。

時刻の固定


時刻固定の必要性

ある関数やクラスのユニットテストを実行する際、堅牢性確認のため、閏年や特定の時刻でバグが出現しないか確認する必要がある。

時刻の固定方法

MockDateモジュールで時刻を固定できる。

/test/date.test.ts
import MockDate from "mockdate";
import moment from "moment";

describe("時刻の固定化", () => {
    beforeAll(() => {
        // JSTで時刻を固定できる
        MockDate.set("2019-08-01 21:00:00");
    });

    afterAll(() => {
        // 時刻の固定を解除する
        MockDate.reset();
    });

    test("Dateは固定時刻の文字列を返す", () => {
        const time = new Date();
        expect(time.toISOString()).toBe("2019-08-01T12:00:00.000Z");
    });
    test("momentはDateのラッパーなため、固定時刻を返す", () => {
        expect(moment().toISOString()).toBe("2019-08-01T12:00:00.000Z");
    });
  });

まとめ


  • Jestで時刻を固定する方法について調査、記載した

参考文献




変更履歴


  1. 2020/07/06: 新規作成

0 件のコメント:

コメントを投稿

MQTTの導入

背景 IoTデバイスの接続環境構築のため、MQTT(mosquitto)の導入を行った。 記事の目的 MQTT(mosquitto)をUbuntuに導入する mosquitto ここではmosquittoについて記載する。 MQTT MQTT(Message Qu...