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 tes...
Search
nunulk
November 14, 2020
Programming
0
300
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
250
PHP Getting Faster
nunulk
0
260
How does learning English broaden your world?
nunulk
0
350
Testing on Laravel
nunulk
1
1.5k
Vue.js + TypeScript + Firebase
nunulk
0
930
Nuxt.js in TypeScript
nunulk
1
430
A startup meets Laravel + Vue.js
nunulk
1
2k
Unit Testing Laravel
nunulk
0
470
A Third-rate Programmer Talked about a Survival Strategy for Software Engineers
nunulk
3
580
Other Decks in Programming
See All in Programming
CSC305 Lecture 02
javiergs
PRO
1
260
2分台で1500examples完走!爆速CIを支える環境構築術 - Kaigi on Rails 2025
falcon8823
3
3.3k
Catch Up: Go Style Guide Update
andpad
0
180
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
230
iOS 17で追加されたSubscriptionStoreView を利用して5分でサブスク実装チャレンジ
natmark
0
610
Playwrightはどのようにクロスブラウザをサポートしているのか
yotahada3
7
2.3k
XP, Testing and ninja testing ZOZ5
m_seki
3
310
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
180
AIエージェント時代における TypeScriptスキーマ駆動開発の新たな役割
bicstone
4
1.5k
GitHub Actions × AWS OIDC連携の仕組みと経緯を理解する
ota1022
0
240
CSC509 Lecture 06
javiergs
PRO
0
240
AIで開発生産性を上げる個人とチームの取り組み
taniigo
0
130
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
890
It's Worth the Effort
3n
187
28k
GraphQLとの向き合い方2022年版
quramy
49
14k
Why Our Code Smells
bkeepers
PRO
339
57k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Done Done
chrislema
185
16k
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 になりますが、 プロパティアクセスはモックがで きないので、なるべくプロパティ アクセスを減らしましょう。 できるだけプロパティ にアクセスしない