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
PHPUnitの「Depends」を使うと次のテストに返り値を渡せるの、なんで?読むぞ! #p...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
asumikam
April 11, 2026
Programming
80
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHPUnitの「Depends」を使うと次のテストに返り値を渡せるの、なんで?読むぞ! #phpcon_odawara
PHPカンファレンス小田原 2026
https://phpcon-odawara.jp/ja/2026/
asumikam
April 11, 2026
More Decks by asumikam
See All by asumikam
「嘘をつくテスト」の失敗例から学ぶ 良いテストコード #frontend_phpcon_do
asumikam
0
940
Harnessing the Power of Mocks and Stubs in PHPUnit / #laravellivejp
asumikam
0
1k
委員長たちの「コシ」
asumikam
0
460
書籍「ユーザーストーリーマッピング」が私のバイブル
asumikam
4
600
「通るまでRe-run」から卒業!落ちないテストを書く勘所
asumikam
3
1.2k
PHPコミュニティのあるきかた & ちいさく PHPUnitをつくってみる / Tech Challenge Party 2026
asumikam
0
160
ubuntu-latest から ubuntu-slim へ移行しよう!コスト削減うれしい~!
asumikam
0
1.3k
ちいさくPHPUnitをつくり、仕組みと拡張ポイントを探る
asumikam
3
1.2k
ちいさくPHPUnitをつくってみる
asumikam
0
150
Other Decks in Programming
See All in Programming
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
360
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
190
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.8k
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
480
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
100
初めてのKubernetes 本番運用でハマった話
oku053
0
120
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
120
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
800
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
370
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
510
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
390
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
Designing for humans not robots
tammielis
254
26k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Making the Leap to Tech Lead
cromwellryan
135
10k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
500
Paper Plane
katiecoart
PRO
2
52k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
260
We Have a Design System, Now What?
morganepeng
55
8.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Claude Code のすすめ
schroneko
67
230k
Transcript
1)16OJUͷʮ%FQFOETʯΛ͏ͱ ࣍ͷςετʹฦΓΛͤΔͷɺͳΜͰʁ ಡΉͧʂ BTVNJLBN
1)16OJUͷ"UUSJCVUFT
w 1)16OJUҎ߱ɺ%PDίϝϯτʹهड़͢Δํ๏͔Β 1)1ͷ"UUSJCVUFͱஈ֊తʹҠߦ͖ͯͨ͠ w Έͳ͞Μͷ͓ؾʹೖΓͷ1)16OJU"UUSJCVUFTͳΜͰ ͔͢ʁ 1)16OJUͷ"UUSJCVUFɺ৭ʑͬͯΔʁ
ͨͱ͑ɺ%BUB1SPWJEFSɻ
ͨͱ͑ɺ5FTU8JUIɻ
ͨͱ͑ɺ(SPVQɻ WFOEPSCJOQIQVOJUHSPVQTMPX
ͨͱ͑ɺ%FQFOET
w ͋Δςετϝιου͕ผͷςετϝιουʹʮґଘʯ͠ ͍ͯΔ͜ͱΛએݴ͢Δ"UUSJCVUF w ґଘݩͷςετ͕ޭ͢Δͱɺґଘઌςετ͕࣮ߦ͞Ε ͞ΒʹґଘݩͷฦΓ͕ґଘઌͷҾͱͯ͠͞ΕΔ w ࣦഊͨ͠߹ґଘઌͷςετʮ4ʢεΩοϓʣʯ ʹͳΔ 1)16OJU"UUSJCVUFT%FQFOET
1)16OJU"UUSJCVUFT%FQFOET
1)16OJU"UUSJCVUFT%FQFOET ґଘઌςετ
1)16OJU"UUSJCVUFT%FQFOET ґଘݩςετ͕ޭ͢Ε ґଘઌςετ͕࣮ߦ͞ΕΔ
1)16OJU"UUSJCVUFT%FQFOET ґଘݩςετ͕ࣦ͠ഊͨ͠Βɺ ͜ͷςετશମ͕ߦΘΕͳ͍
1)16OJU"UUSJCVUFT%FQFOET ͔͠ɺґଘݩͷσʔλΛड͚औΕΔʂ ʢ%FUB1SPWJEFSΈ͍ͨͩͳ🧐ʣ
ͳΜͰʁ
ؾʹͳΔʂʂʂ
ಡΉͧʂ
ࠓͷൃද w %FQFOET͕ͲΜͳΈͰಈ͍͍ͯΔ͔Λ ίʔυϦʔσ Οϯάͯ͠શʹཧղ͢Δ w %FQFOETͷ͍Ͳ͜Ζʁ
ਃ͠Ε·ͨ͠ w͋͢Έ 𝕏 !BTVNJLBN wגࣜձࣾϦϯέʔδ w1)1ΧϯϑΝϨϯεখాݪ࣮ߦҕһ
ಡΉͧ
w ಡΈ·ͨ͠ w αϚϦʔͱ͓ͯ͠ಧ͚͠·͢ w ग़ͯ͘ΔίʔυҙਤΛ͑ΔͨΊ؆қԽ͍ͯ͠Δͷ Ͱ࣮ࡍͷͷͱҟͳΓ·͢ ಡΉͧ ಡΉͧ
ͬ͘͟Γʙͷߏ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ґଘؔνΣοΫɾॲཧ ςετ࣮ߦ ฦΓͷ֨ೲ લॲཧ ࣮ॲཧ ಡΉͧ
ͬ͘͟Γʙͷߏ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ґଘؔνΣοΫɾॲཧ ςετ࣮ߦ ฦΓͷ֨ೲ લॲཧ ࣮ॲཧ ಡΉͧ
"UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ > UFTU UFTU UFTU <%FQFOET bUFTU > ಡΉͧ
"UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ > UFTU UFTU UFTU <%FQFOET bUFTU > > UFTU
UFTU UFTU ಡΉͧ
w <%FQFOET>Λ3F fl FDUJPOͰಡΈऔΓɺʮͲͷςετ͕ Կʹґଘ͍ͯ͠Δ͔ʯΛ෦දݱʹม͢Δ w ֤ςετʹʮࣗΑΓઌʹޭ͍ͯ͠ͳ͚ΕͳΒͳ͍ ςετͷϦετʯΛ࣋ͨͤΔ w ͦͷϦετΛͱʹɺґଘݩ͕ඞͣઌʹདྷΔΑ͏࣮ߦ
ॱΛΈସ͑Δ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ಡΉͧ
ͬ͘͟Γʙͷߏ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ςετ࣮ߦલ ςετ࣮ߦ ςετ࣮ߦޙ લॲཧ ࣮ॲཧ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ґଘ͕ಛʹͳ͍߹Կ͠ͳ͍ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ґଘϦετΛ͙Δ͙Δ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ࠓ·ͰͷޭςετϦετΛΈͯ ΤϥʔʗεΩοϓॲཧ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ޭͨ͠ςετͷSFUVSO7BMVFΛऔಘ EFQFOEFODZ*OQVUʹ֨ೲ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ޭͨ͠ςετͷSFUVSO7BMVFΛऔಘ EFQFOEFODZ*OQVUʹ֨ೲ ˣ͍ͭೖΕ͔ͨ·ͩΘ͔Βͳ͍Ͷ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFIBOEMF%FQFOEFODJFT ޭͨ͠ςετͷSFUVSO7BMVFΛऔಘ EFQFOEFODZ*OQVUʹ֨ೲ ˢ͜ͷޙ͏ͷ͔ͳʁ ˣ͍ͭೖΕ͔ͨ·ͩΘ͔Βͳ͍Ͷ ಡΉͧ
ςετ࣮ߦલɺԿΛ͍ͯ͠Δʁ w ґଘݩͷςετ͕ͯ͢ޭࡁΈ͔Λ֬ೝ͢Δ w શ෦ޭ͍ͯ͠ΕςετͷҾΛ४උ͢Δ w ҰͭͰະޭͳΒςετεΩοϓ͞ΕΔ w SFUVSO7BMVF EFQFOEFODZ*OQVUʁ🧐
w ࣍ͷॲཧ(0 ಡΉͧ
ͬ͘͟Γʙͷߏ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ςετ࣮ߦલ ςετ࣮ߦ ςετ࣮ߦޙ લॲཧ ࣮ॲཧ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFSVO5FTU ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFSVO5FTU EFQFOEFODZ*OQVUΛҾʹ JOWPLF5FTU.FUIPE࣮ߦʂ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFJOWPLF5FTU.FUIPE ςετέʔεͷݺͼग़͠ʙʙʂʂʂ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFJOWPLF5FTU.FUIPE ςετέʔεͷݺͼग़͠ʙʙʂʂʂ UFTU3FTVMUΛฦ͍ͯ͠Δɻ͏ͷ͔ʂʁ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTFSVO5FTU ͪͳΉͱʜ UIJTEBUBʹEBUB1SPWJEFSͷ͕ ೖ͍ͬͯͨʂ ಡΉͧ
w ґଘݩςετʢͳͲʣͷฦΓΛ݁߹ͯ͠ҾΛΈ ཱͯɺςετϝιουΛݺͼग़͢ w UFTU3FTVMUʁ🧐 w ࣍ͷॲཧ(0 ςετ࣮ߦ࣌ɺԿΛ͍ͯ͠Δʁ ಡΉͧ
ͬ͘͟Γʙͷߏ "UUSJCVUFΛࢀߟʹςετΛฒͼସ͑Δ ςετ࣮ߦલ ςετ࣮ߦ ςετ࣮ߦޙ લॲཧ ࣮ॲཧ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTF SVO#BSF 1)16OJUa5FTU3VOOFSa5FTU3FTVMUa1BTTFE5FTUT UFTU.FUIPE1BTTFE ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTF SVO#BSF 1)16OJUa5FTU3VOOFSa5FTU3FTVMUa1BTTFE5FTUT UFTU.FUIPE1BTTFE ฦΓΛड͚औͬͯ UFTU.FUIPE1BTTFEʹ͠ʜ ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTF SVO#BSF 1)16OJUa5FTU3VOOFSa5FTU3FTVMUa1BTTFE5FTUT UFTU.FUIPE1BTTFE ಡΉͧ
1)16OJUa'SBNFXPSLa5FTU$BTF SVO#BSF 1)16OJUa5FTU3VOOFSa5FTU3FTVMUa1BTTFE5FTUT UFTU.FUIPE1BTTFE SFUVSO7BMVFʹ֨ೲ͍ͯ͠Δʂ ʢIBOEMF%FQFOEFODJFTͰΈͨͭʙʙʣ ಡΉͧ
w ฦΓΛϓϩηεશମͰڞ༗͞ΕΔྖҬʹอଘ͢Δ w ޙଓͷґଘςετ͜͜Λࢀরͯ͠ҾΛड͚औΔ ςετ࣮ߦޙɺԿΛ͍ͯ͠Δʁ ಡΉͧ
શʹཧղͨ͠ ಡΉͧ
શମͷ·ͱΊ w ʮલॲཧʯͰ͏·͍͜ͱฒͼସ͑ͯ w ʮ࣮ॲཧʯʢςετέʔεʣͰલͷSFUVSO7BMVFΛ ͏·͍͜ͱςετʹ͍ͯͨ͠ w ͏͚࣌ͩอ࣋͢ΔͰͳ͘ৗʹSFUVSO7BMVFΛ͢ w ಡΜͰΈΕʮͦ͏ͳͬͨΒͦ͏ͳΔΖʯͳॲཧͩͬͨ
w ͜ΕͰεοΩϦΕ·͢ ಡΉͧ
%FQFOETʹ͍ΛͤΔ
͍
͍ॴΉ͍ͣʂ ʢਖ਼ʣ
w ศརͦ͏ͱࢥ͍ͭͭ w ςετجຊʮಠཱʯͷํ͕خ͍͠ w ґଘؔΛ࡞Δͱࣦഊ͕࿈తͳεΩοϓΛੜΜͩΓɺ ҉ͷ࣮ߦॱং੍͕ੜ·ΕͨΓ͢Δ w ͨͩ͠ɺηοτΞοϓίετ͕ߴ͍ૢ࡞ɺঢ়ଶͷมભΛ εςοϓ͝ͱʹݕূ͍ͨ͠໘Ͱ༗ޮ͔ʁ
1)16OJUͷ%FQFOETʹ͍ΛͤΔ
None
None
৭ʑ͋Γͦ͏ʂ
%FQFOET༗ޮ׆༻͍ͯ͠Δਓ ৭ʑڭ͍͑ͯͩ͘͞ʂ
🍊͓ΘΓ🍊 Έͯ͘ΕͯŗžŜƄŪŤƃŝœŖ😘