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

Laravelでテストしやすいコードを書く5 / 5 tips of building testable modules in Laravel

nunulk
November 14, 2020

Laravelでテストしやすいコードを書く5 / 5 tips of building testable modules in Laravel

nunulk

November 14, 2020
Tweet

More Decks by nunulk

Other Decks in Programming

Transcript

  1. Laravel でテストしやすいコードを書く5つのコツ
    2020/11/14(土) Techpit
    nunulk

    View Slide

  2. View Slide

  3. 御礼 100部突破

    質問や要望など大歓迎ですので
    どしどしお寄せください!

    View Slide

  4. Agenda
    • 自動化されたソフトウェアテストの重要性
    • テストファースト vs. テストセカンド
    • Laravel でテストしやすいコードを書くコツ
    5 MIN
    5 MIN
    40 MIN

    View Slide

  5. 自動化されたソフトウェアテストの重要性

    View Slide

  6. 自動化されたソフトウェアテストの重要性
    共用しているモジュールの変更に
    対する変更漏れを防ぐことができ
    ます。
    変更検知
    手動テストではテストケースの漏
    れや確認ミスが発生しうるが、自
    動テストであれば毎回すべてのテ
    ストケースが実行されます。
    人為的ミスの回避
    パターンの多いケースを手動で何
    度もやるよりはコンピュータにや
    らせたほうが速くて安上がりで
    す。
    コスト削減

    View Slide

  7. テストファースト vs. テストセカンド

    View Slide

  8. テストセカンド
    テストファースト

    View Slide

  9. テストセカンド
    テストファースト

    View Slide

  10. テストセカンド
    テストファースト ・仕様の理解が高い場合に向いている
    ・実装方法が明瞭な場合に向いている
    ・テストが書かれないことがある
    ・仕様の理解が低い場合に向いている
    ・実装方法が不明瞭な場合に向いている
    ・テストが確実に書かれる

    View Slide

  11. Laravel でテストしやすいコードを書くコツ

    View Slide

  12. テストしやすいコードとは?
    ファイルの読み書きや外部サービ
    スとのやりとりを分離しておくと
    テストが書きやすくなります。
    副作用が少ない
    テスト対象のクラスや関数が依存
    しているクラスや関数が少なくす
    ることでテストが書きやすくなり
    ます。
    依存関係が少ない
    テストしたい対象をできるだけ小
    さくすることで、テストが書きや
    すくなります。
    関数が小さい

    View Slide

  13. Laravel でテストしやすいコードを書くコツ 1/2
    ファイルの読み書きや外部サービ
    スとのやりとりを分離しておくと
    テストが書きやすくなります。
    副作用を分離する
    Dependency Injection は、引数に指
    定されたクラスのインスタンスを
    勝手に生成して渡してくれる仕組
    みで、テストのときにクラスの差
    し替えが簡単になります。
    DI を使う
    テストしたい対象をできるだけ小
    さくすることで、テストが書きや
    すくなります。
    関数をできるだけ小さくす

    View Slide

  14. Laravel でテストしやすいコードを書くコツ 2/2
    静的メソッドをモックするのは若
    干面倒なので、インスタンス化し
    ても変わらない場合はインスタン
    スメソッドにしましょう。
    できるだけ静的メソッ
    ドを使わない
    Eloquent を使ったモデルの場合プ
    ロパティが public になりますが、
    プロパティアクセスはモックがで
    きないので、なるべくプロパティ
    アクセスを減らしましょう。
    できるだけプロパティ
    にアクセスしない

    View Slide