Upgrade to Pro — share decks privately, control downloads, hide ads and more …

mockdateええやん

Efbc292fd2e2c4caa0ede1d1532804a9?s=47 U76NER
January 14, 2022

 mockdateええやん

Efbc292fd2e2c4caa0ede1d1532804a9?s=128

U76NER

January 14, 2022
Tweet

Transcript

  1. mockdateええやん LT会(仮) 2022/01/14 u76ner

  2. 時刻を使った関数 2 - 時刻を使った関数を書くことはよくある 
 - 例)現在時刻が2022/1/14より早い日付かどうかを返す関数 
 
 


  3. テストどうすんねん問題 3 - テストを実行する時刻によって結果が変わってしまう 
 - テストが書けない
 
 
 ?????????????

  4. 今までどうしてたか 4 - 現在時刻を引数に渡すことでテストを書いてた 
 - デフォルト値で現在時刻を書いておけば使う分には意識しなくて良い 
 
 


  5. だけども 5 - まず使うことはない引数を書いておくのはよくなさそう 
 - 意図しない使い方をされる
 
 
 


    - 引数増やすときの順番を間違える 
 
 
 無理やり引数渡されて…シテ...状態になった関数くん 順序逆だよ
  6. だけども 6 - まず使うことはない引数を書いておくのはよくなさそう 
 - 別の関数で使うときに引数を渡し忘れる 
 
 こうなると人間が頑張ってミスを見つけるしかない

  7. mockdate 7 - mockdate
 - https://www.npmjs.com/package/mockdate 
 - テストを実行するときの時刻を固定できるライブラリ 


    - 中の実装もシンプルで面白い
 
 - よいところ
 - dayjsとかを使っててもok
 - dayjsも結局中身はDateなので
 - 使い方が超楽
 
 

  8. mockdate 8 - 使い方は超楽
 - 使う前にset()
 - 使った後にreset()
 
 -

    これだけ
 
 

  9. こんな感じでどうでしょう 9 - 時刻ごとにdescribeでまとめると書きやすいかも? 
 
 


  10. 10