$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Laravelでテストしやすいコードを書く5 / 5 tips of building tes...
Search
nunulk
November 14, 2020
Programming
0
310
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
260
PHP Getting Faster
nunulk
0
270
How does learning English broaden your world?
nunulk
0
360
Testing on Laravel
nunulk
1
1.5k
Vue.js + TypeScript + Firebase
nunulk
0
940
Nuxt.js in TypeScript
nunulk
1
430
A startup meets Laravel + Vue.js
nunulk
1
2k
Unit Testing Laravel
nunulk
0
490
A Third-rate Programmer Talked about a Survival Strategy for Software Engineers
nunulk
3
580
Other Decks in Programming
See All in Programming
CSC509 Lecture 14
javiergs
PRO
0
220
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
100
dnx で実行できるコマンド、作ってみました
tomohisa
0
150
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
700
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
130
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
140
AIコーディングエージェント(skywork)
kondai24
0
160
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.8k
エディターってAIで操作できるんだぜ
kis9a
0
720
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
160
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
500
How Software Deployment tools have changed in the past 20 years
geshan
0
29k
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
720
Side Projects
sachag
455
43k
A Tale of Four Properties
chriscoyier
162
23k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
For a Future-Friendly Web
brad_frost
180
10k
Faster Mobile Websites
deanohume
310
31k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Statistics for Hackers
jakevdp
799
230k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
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 になりますが、 プロパティアクセスはモックがで きないので、なるべくプロパティ アクセスを減らしましょう。 できるだけプロパティ にアクセスしない