LoginSignup
0
0

More than 5 years have passed since last update.

new Date() のスタブを作る

Posted at

概要

JavaScriptのユニットテストを実行する場合、Date.now()new Date() をスタブ化して指定した値を返すようにしたい場合がある。
Date.now() は単にメソッドを置き換えれば良いだけだが、new Date() のスタブは一見迷ってしまうのでここに記録しておく。

TL;DR

var OriginalDate = Date;
Date = function () { return new OriginalDate(2017, 0, 1); };
Date.prototype = OriginalDate.prototype;

説明

  • Date = function () { return new OriginalDate(2017, 0, 1); }; でコンストラクタを置き換える
  • さらにprototypeもコピーすることで、 (new Date()) instanceof Date されてもtrueを返せる
  • Date.now(), Date.UTC(), Date.parse() には対応していないので必要に応じて追加する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0