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
250
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
210
PHP Getting Faster
nunulk
0
200
How does learning English broaden your world?
nunulk
0
300
Testing on Laravel
nunulk
1
1.4k
Vue.js + TypeScript + Firebase
nunulk
0
880
Nuxt.js in TypeScript
nunulk
1
370
A startup meets Laravel + Vue.js
nunulk
1
1.8k
Unit Testing Laravel
nunulk
0
420
A Third-rate Programmer Talked about a Survival Strategy for Software Engineers
nunulk
3
550
Other Decks in Programming
See All in Programming
数十万行のプロジェクトを Scala 2から3に完全移行した
xuwei_k
0
270
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
180
快速入門可觀測性
blueswen
0
340
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
700
Symfony Mapper Component
soyuka
2
730
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
120
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1.5k
テストケースの名前はどうつけるべきか?
orgachem
PRO
0
130
tidymodelsによるtidyな生存時間解析 / Japan.R2024
dropout009
1
770
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
4
230
From Translations to Multi Dimension Entities
alexanderschranz
2
130
17年周年のWebアプリケーションにTanStack Queryを導入する / Implementing TanStack Query in a 17th Anniversary Web Application
saitolume
0
250
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
520
39k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Into the Great Unknown - MozCon
thekraken
33
1.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Documentation Writing (for coders)
carmenintech
66
4.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Visualization
eitanlees
146
15k
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 になりますが、 プロパティアクセスはモックがで きないので、なるべくプロパティ アクセスを減らしましょう。 できるだけプロパティ にアクセスしない