ECMA Script6(JavaScript)でDate.now()、new Date()をモックする

求人

ECMA Script6(JavaScript)のテストをしている時にDate.now()をある特定の時間にしたい時がありました。

Date.now()は現在時間のミリ秒を返すので、ある日時からの秒数に指定しないとテストが今はOKでも後々NGになる可能性があるためです。

sinonでもできるかもしれないですが、sinonを使わなくても以下のように記述するとモックすることができます。

結果は期待とおりの0です。

ECMA Script6(JavaScript)でDate.now()、new Date()をモックする

new Date()をモックする

new Date()をモックしようと色々試みましたがsinonを使わないと私の能力では無理でした。

sinon.useFakeTimers()メソッドを使うと時間を変えることができました。

useFakeTimers()の引数にミリ秒を指定してあげます。

mochaのbeforeやbeforeEach内で時間を変更してあげて、afterやafterEachでrestoreメソッドで戻してあげたら良いと思います。

以下記述例です。

コンソールの出力結果は以下のようになり、時間が変更されていることが確認できます。

参考サイト

関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
Python3.6,Djangoを勉強中です,Javaは少し飽きてしまってます–;
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくば、我に七難八苦を与えたまえ」です^^

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA