背景
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で時刻を固定する方法について調査、記載した
参考文献
変更履歴
- 2020/07/06: 新規作成
0 件のコメント:
コメントを投稿