Unit Testを書く際、時刻をテスト用に設定するにはPythonならFreezeGunなどのツールがあります。今回、Ionicのテストを書いていてTypeScriptならどうするのか調べてみました。
部品
Javascript用のSinon.jsというライブラリが良さげです。TypeScriptには@types/sinonというラッパーがあります。
インストール
npm install --save-dev sinon @types/sinon
使い方
割と直球勝負です。単純に時刻を固定化するのならこんな感じ。
import { useFakeTimers } from 'sinon';
let clock = useFakeTimers(new Date(2018, 12, 5, 20, 20, 20).getTime());
// これで時計は2018年12月5日20時20分20秒になります
clock.restore(); // 終わったら必ず解放