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

mockdateええやん

U76NER
January 14, 2022

 mockdateええやん

WASD Inc. LT会(仮)
2022-01-14

U76NER

January 14, 2022
Tweet

More Decks by U76NER

Other Decks in Programming

Transcript

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

    View full-size slide

  2. 時刻を使った関数
    2
    - 時刻を使った関数を書くことはよくある

    - 例)現在時刻が2022/1/14より早い日付かどうかを返す関数



    View full-size slide

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

    - テストが書けない



    ?????????????

    View full-size slide

  4. 今までどうしてたか
    4
    - 現在時刻を引数に渡すことでテストを書いてた

    - デフォルト値で現在時刻を書いておけば使う分には意識しなくて良い



    View full-size slide

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

    - 意図しない使い方をされる




    - 引数増やすときの順番を間違える



    無理やり引数渡されて…シテ...状態になった関数くん
    順序逆だよ

    View full-size slide

  6. だけども
    6
    - まず使うことはない引数を書いておくのはよくなさそう

    - 別の関数で使うときに引数を渡し忘れる


    こうなると人間が頑張ってミスを見つけるしかない

    View full-size slide

  7. mockdate
    7
    - mockdate

    - https://www.npmjs.com/package/mockdate

    - テストを実行するときの時刻を固定できるライブラリ

    - 中の実装もシンプルで面白い


    - よいところ

    - dayjsとかを使っててもok

    - dayjsも結局中身はDateなので

    - 使い方が超楽



    View full-size slide

  8. mockdate
    8
    - 使い方は超楽

    - 使う前にset()

    - 使った後にreset()


    - これだけ



    View full-size slide

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



    View full-size slide