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
フロントエンドの単体テスト
Search
みき
August 30, 2024
Programming
0
240
フロントエンドの単体テスト
みき
August 30, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
QA環境で誰でも自由自在に現在時刻を操って検証できるようにした話
kalibora
1
100
ドメインイベント増えすぎ問題
h0r15h0
2
520
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
8
1.7k
StarlingMonkeyを触ってみた話 - 2024冬
syumai
3
310
Go の GC の不得意な部分を克服したい
taiyow
3
920
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
1
420
ゆるやかにgolangci-lintのルールを強くする / Kyoto.go #56
utgwkk
2
630
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
270
fs2-io を試してたらバグを見つけて直した話
chencmd
0
270
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
370
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
1.2k
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
610
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
328
21k
Visualization
eitanlees
146
15k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Code Review Best Practice
trishagee
65
17k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
840
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
A Modern Web Designer's Workflow
chriscoyier
693
190k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Practical Orchestrator
shlominoach
186
10k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
Transcript
フロントエンドの単体テスト
2 ࣗݾհ Introduction ࡾ ඩྤ (Takeru Miki) גࣜձࣾϋοΫπ ςοΫϦʔυ !UBLF@DBOUJL
ɾྸ: 24ࡀ (2000ੜ) ɾॴଐ: גࣜձࣾϋοΫπ (৽ଔ2) ɾۀ: όοΫΤϯυ(PHPer)ɺΠϯϑϥ(AWS) ɾझຯ: ࠷ۙΫϨϨͱΪλʔʹϋϚͬͯΔ🎸
フロントエンドの単体テスト ͡Ίʹ ୯ମςετͱ ͳͥ୯ମςετΛߦ͏ͷ͔ ϑϩϯτΤϯυͷ୯ମςετ ͍͞͝ʹ DPOUFOUT ͔͜͜Βޙ10͔͔Γ·͢()
フロントエンドの単体テスト DPOUFOUT ͡Ίʹ ୯ମςετͱ ͳͥ୯ମςετΛߦ͏ͷ͔ ϑϩϯτΤϯυͷ୯ମςετ ͍͞͝ʹ
͡Ίʹ ࠓճ͢͜ͱ ɾ୯ମςετͬͯͳΜͳͷʁ ɾͦͦͳΜͰ୯ମςετΛߦ͏ͷʁ ɾϑϩϯτΤϯυʹ͓͚Δ୯ମςετͬͯʁ
͡Ίʹ ͜Μͳਓʹ͚ͯ ɾςετͬͯԿ͕͍͍ͷʁ ɾϑϩϯτΤϯυͷςετͬͯԿॻ͘ͷʁ ɾςετॻ͍ͯΔ͚Ͳ͜ΕͰ͍͍ͷʁ
͡Ίʹ ओͳࢀߟจݙ
フロントエンドの単体テスト DPOUFOUT ͡Ίʹ ୯ମςετͱ ͳͥ୯ମςετΛߦ͏ͷ͔ ϑϩϯτΤϯυͷ୯ମςετ ͍͞͝ʹ ͜͜Ͱ2ͬͯΔͱௐࢠ͍͍Αʂ
୯ମςετͱ ͓͓·͔ͳςετͷछྨ ɾ୯ମςετ 6OJUςετ ɾ౷߹ςετ *OUFHSBUJPOςετ ɾ&&ςετ
୯ମςετͱ ͓͓·͔ͳςετͷछྨ ɾ୯ମςετ 6OJUςετ ɹɾιϑτΣΞͷݸʑͷখ͞ͳ෦Λςετ͢Δ͜ͱ ɹɾఆΊΒΕͨೖྗ͔Βظ͞Εͨग़ྗΛಘΒΕΔ͔Λ֬ೝ ɾ౷߹ςετ *OUFHSBUJPOςετ
ɹɾෳͷϞδϡʔϧΛΈ߹Θͤͨςετ ɾ&&ςετ ɹɾϞοΫΛߦΘͣɺόοΫΤϯυɾ%#Λ߹Θͤͨςετ
୯ମςετͱ ͓͓·͔ͳςετͷछྨ ɾ୯ମςετ 6OJUςετ ɹɾιϑτΣΞͷݸʑͷখ͞ͳ෦Λςετ͢Δ͜ͱ ɹɾఆΊΒΕͨೖྗ͔Βظ͞Εͨग़ྗΛಘΒΕΔ͔Λ֬ೝ ɾ౷߹ςετ *OUFHSBUJPOςετ
ɹɾෳͷϞδϡʔϧΛΈ߹Θͤͨςετ ɾ&&ςετ ɹɾϞοΫΛߦΘͣɺόοΫΤϯυɾ%#Λ߹Θͤͨςετ
୯ମςετͱ ֤ςετͷಛ ɾ୯ମςετ ɾ౷߹ςετ ɾ&&ςετ ίετ ৴པ
খ ߴ
୯ମςετͱ ςετϐϥϛου ԼͷςετΛଟ͘ॻ͘͜ͱͰɺ ΑΓ҆ఆͨ͠අ༻ରޮՌͷߴ͍ςετ
୯ମςετͱ ·ͱΊ ୯ମςετͱ ɾιϑτΣΞͷݸʑͷখ͞ͳ෦Λςετ͢Δ͜ͱ ɾఆΊΒΕͨೖྗ͔Βظ͞Εͨग़ྗΛಘΒΕΔ͔Λ֬ೝ ɾίετ͍͔Β࢝Ί͍͢
フロントエンドの単体テスト DPOUFOUT ͡Ίʹ ୯ମςετͱ ͳͥ୯ମςετΛߦ͏ͷ͔ ϑϩϯτΤϯυͷ୯ମςετ ͍͞͝ʹ ͔͜͜Β7͔͔Δ!
ͳͥ୯ମςετΛߦ͏ͷ͔ ͳΜͰ୯ମςετ͢Δͷʁ ɾΑΓ༏ΕͨઃܭʹͳΔ͔Β ɾόά͕গͳ͘ͳΔ͔Β ɾςετ͕༷ॻ υΩϡϝϯτ ʹͳΔ͔Β
ͳΜͰ୯ମςετ͢Δͷʁ ɾΑΓ༏ΕͨઃܭʹͳΔ͔Β ɾόά͕গͳ͘ͳΔ͔Β ɾςετ͕༷ॻ υΩϡϝϯτ ʹͳΔ͔Β ୯ମςετΛߦͬͨ݁Ռʹա͗ͳ͍ ͳͥ୯ମςετΛߦ͏ͷ͔
ͳΜͰ୯ମςετ͢Δͷʁ ιϑτΣΞ։ൃϓϩδΣΫτͷ Λ࣋ଓՄೳ ͳͥ୯ମςετΛߦ͏ͷ͔
ϓϩδΣΫτͷ අ࣌ؒ͢ ςετͳ͠ ςετ͋Γ ͳͥ୯ମςετΛߦ͏ͷ͔
ϓϩδΣΫτͷ අ࣌ؒ͢ ςετͳ͠ ςετ͋Γ ࣭ͷߴ͍ςετΛ͢Δඞཁ͕͋Δ ͳͥ୯ମςετΛߦ͏ͷ͔
࣭ͷߴ͍ςετͱ ࠷খݶͷอकίετͰɺ ࠷େݶͷՁΛੜΈग़͢͜ͱ͕Ͱ͖Δςετ ͳͥ୯ମςετΛߦ͏ͷ͔
࣭ͷߴ͍ςετͱ ͳͥ୯ମςετΛߦ͏ͷ͔ ɾॻ͖ա͗ͯμϝ ɾҙຯͷແ͍ςετʹͳͬͯͳ͍͔
࣭ͷߴ͍ςετͱ ɾυϝΠϯϩδοΫͳͲͷΑΓॏཁͳ෦ ɾෳࡶͳϩδοΫΛ࣋ͭ෦ ͳͥ୯ମςετΛߦ͏ͷ͔
·ͱΊ ͳͥ୯ମςετΛߦ͏ͷ͔ ୯ମςετ ɾιϑτΣΞ։ൃϓϩδΣΫτͷΛ࣋ଓՄೳʹ͢ΔͨΊ ɾ࣭ͷߴ͍ςετΛ͢Δඞཁ͕͋Δ ɾ࠷খݶͷอकίετͰ࠷େݶͷՁΛੜΈग़͢
フロントエンドの単体テスト DPOUFOUT ͡Ίʹ ୯ମςετͱ ͳͥ୯ମςετΛߦ͏ͷ͔ ϑϩϯτΤϯυͷ୯ମςετ ͍͞͝ʹ Γ4Ҏ্ͳ͔ͬͨΒٸ͗Ͱʂ
ϑϩϯτΤϯυͷ୯ମςετ ϑϩϯτΤϯυʹ͓͚Δ୯ମςετ 🤔
ϑϩϯτΤϯυͷ୯ମςετൣғ ɾΦϒδΣΫτؔ ɾΧελϜ)PPL ɾ୯ମίϯϙʔωϯτ ϑϩϯτΤϯυͷ୯ମςετ
ϑϩϯτΤϯυʹ͓͚Δ࣭ͷߴ͍୯ମςετ 🤔 ϑϩϯτΤϯυͷ୯ମςετ
ςετϐϥϛου ԼͷςετΛଟ͘ॻ͘͜ͱͰɺ ΑΓ҆ఆͨ͠අ༻ରޮՌͷߴ͍ςετ ϑϩϯτΤϯυͷ୯ମςετ
ςεςΟϯάτϩϑΟʔ ίʔυͷΧόϨοδͰͳ͘ɺ ϢʔεέʔεͷΧόϨοδΛॏࢹ ϑϩϯτΤϯυͷ୯ମςετ
ɾυϝΠϯϩδοΫͳͲͷΑΓॏཁͳ෦ ɾෳࡶͳϩδοΫΛ࣋ͭ෦ ϑϩϯτΤϯυʹ͓͚Δ࣭ͷߴ͍୯ମςετ ϑϩϯτΤϯυͷ୯ମςετ
ɾυϝΠϯϩδοΫͳͲͷΑΓॏཁͳ෦ ɾෳࡶͳϩδοΫΛ࣋ͭ෦ ϑϩϯτΤϯυʹ͓͚Δ࣭ͷߴ͍୯ମςετ ϑϩϯτΤϯυͷ୯ମςετ
ɾίʔυͷذΤοδέʔε͕ଟ͍෦ ɾσʔλΛܗ͢ΔΞϧΰϦζϜͱ͔ ɾঢ়ଶཧͷϩδοΫͱ͔ ɾ"1*௨৴ͷ݁ՌͰΤϥʔϋϯυϦϯά͢Δͷͱ͔ ɾόϦσʔγϣϯͱ͔ ෳࡶͳϩδοΫͬͯԿʁ ϑϩϯτΤϯυͷ୯ମςετ
ɾιʔτʹؔ͢Δςετ ɾྻΛঢॱʹιʔτͰ͖Δ͜ͱ ɾۭͷ߹ͦͷ··ฦ٫Ͱ͖Δ͜ͱ ɾιʔτ࣌ʹݩͷྻΛมߋͰ͖ͳ͍͜ͱ ࣮ࡍͷςετέʔεྫ ϑϩϯτΤϯυͷ୯ମςετ
ɾύεϫʔυͷόϦσʔγϣϯʹؔ͢Δςετ ɾڧྗͳύεϫʔυΛ༗ޮఆͰ͖Δ͜ͱ ɾ͍ύεϫʔυΛແޮఆͰ͖Δ͜ͱ ɾࣈؚ͕·Ε͍ͯͳ͍ύεϫʔυΛແޮఆͰ͖Δ͜ͱ ࣮ࡍͷςετέʔεྫ ϑϩϯτΤϯυͷ୯ମςετ
フロントエンドの単体テスト DPOUFOUT ͡Ίʹ ୯ମςετͱ ͳͥ୯ମςετΛߦ͏ͷ͔ ϑϩϯτΤϯυͷ୯ମςετ ͍͞͝ʹ
͍͞͝ʹ ɾ୯ମςετͬͯͳΜͳͷʁ ɾςετͷதͰҰͭͷ୯ҐΛςετ͢Δখ͍͞ςετ ɾͦͦͳΜͰ୯ମςετΛߦ͏ͷʁ ɾϓϩδΣΫτͷΛ࣋ଓՄೳͳͷʹ͢ΔͨΊ ɾϑϩϯτΤϯυʹ͓͚Δ୯ମςετͬͯʁ ɾෳࡶͳϩδοΫΛςετ͢Δͷʹ࠷ద શମͷ·ͱΊ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ͍͞͝ʹ