Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Laravelでテストしやすいコードを書く5 / 5 tips of building testable modules in Laravel
Search
nunulk
November 14, 2020
Programming
0
220
Laravelでテストしやすいコードを書く5 / 5 tips of building testable modules in Laravel
nunulk
November 14, 2020
Tweet
Share
More Decks by nunulk
See All by nunulk
Design It! in a nutshell
nunulk
1
190
PHP Getting Faster
nunulk
0
180
How does learning English broaden your world?
nunulk
0
270
Testing on Laravel
nunulk
1
1.2k
Vue.js + TypeScript + Firebase
nunulk
0
860
Nuxt.js in TypeScript
nunulk
1
290
A startup meets Laravel + Vue.js
nunulk
1
1.7k
Unit Testing Laravel
nunulk
0
370
A Third-rate Programmer Talked about a Survival Strategy for Software Engineers
nunulk
3
530
Other Decks in Programming
See All in Programming
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
110
スキーマ駆動開発による品質とスピードの両立 - 私達は何故、スキーマを書くのか
kentaroutakeda
0
170
Milestoner
bkuhlmann
1
410
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
270
Site Reliability Engineering for GMO
pyama86
8
1k
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
840
Amazon SQSコンシューマー疎結合への旅 - 出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 #3
quiver
0
270
Snowflakeで眠ったデータを起こそう!
estie
0
120
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
650
Polars入門
daikikatsuragawa
1
100
Fragment Composition of GraphQL
quramy
7
1k
SIMD Parallel Programming with the Vector API
josepaumard
0
180
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
44
9.7k
Testing 201, or: Great Expectations
jmmastey
28
6.4k
The Cost Of JavaScript in 2023
addyosmani
16
3.9k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Design by the Numbers
sachag
274
18k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Building Applications with DynamoDB
mza
88
5.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
Raft: Consensus for Rubyists
vanstee
132
6.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
121
39k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
357
22k
Transcript
Laravel でテストしやすいコードを書く5つのコツ 2020/11/14(土) Techpit nunulk
None
御礼 100部突破 質問や要望など大歓迎ですので どしどしお寄せください!
Agenda • 自動化されたソフトウェアテストの重要性 • テストファースト vs. テストセカンド • Laravel でテストしやすいコードを書くコツ
5 MIN 5 MIN 40 MIN
自動化されたソフトウェアテストの重要性
自動化されたソフトウェアテストの重要性 共用しているモジュールの変更に 対する変更漏れを防ぐことができ ます。 変更検知 手動テストではテストケースの漏 れや確認ミスが発生しうるが、自 動テストであれば毎回すべてのテ ストケースが実行されます。 人為的ミスの回避
パターンの多いケースを手動で何 度もやるよりはコンピュータにや らせたほうが速くて安上がりで す。 コスト削減
テストファースト vs. テストセカンド
テストセカンド テストファースト
テストセカンド テストファースト
テストセカンド テストファースト ・仕様の理解が高い場合に向いている ・実装方法が明瞭な場合に向いている ・テストが書かれないことがある ・仕様の理解が低い場合に向いている ・実装方法が不明瞭な場合に向いている ・テストが確実に書かれる
Laravel でテストしやすいコードを書くコツ
テストしやすいコードとは? ファイルの読み書きや外部サービ スとのやりとりを分離しておくと テストが書きやすくなります。 副作用が少ない テスト対象のクラスや関数が依存 しているクラスや関数が少なくす ることでテストが書きやすくなり ます。 依存関係が少ない
テストしたい対象をできるだけ小 さくすることで、テストが書きや すくなります。 関数が小さい
Laravel でテストしやすいコードを書くコツ 1/2 ファイルの読み書きや外部サービ スとのやりとりを分離しておくと テストが書きやすくなります。 副作用を分離する Dependency Injection は、引数に指
定されたクラスのインスタンスを 勝手に生成して渡してくれる仕組 みで、テストのときにクラスの差 し替えが簡単になります。 DI を使う テストしたい対象をできるだけ小 さくすることで、テストが書きや すくなります。 関数をできるだけ小さくす る
Laravel でテストしやすいコードを書くコツ 2/2 静的メソッドをモックするのは若 干面倒なので、インスタンス化し ても変わらない場合はインスタン スメソッドにしましょう。 できるだけ静的メソッ ドを使わない Eloquent
を使ったモデルの場合プ ロパティが public になりますが、 プロパティアクセスはモックがで きないので、なるべくプロパティ アクセスを減らしましょう。 できるだけプロパティ にアクセスしない