Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
フロントエンドの単体テスト
Search
みき
August 30, 2024
Programming
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
フロントエンドの単体テスト
みき
August 30, 2024
More Decks by みき
See All by みき
AIの特性から考える よりよりAIの活用法
takecantik
0
38
Other Decks in Programming
See All in Programming
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
290
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
AmebaブログはKMPから卒業します
kmars0605
0
190
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
300
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
ActionController meets Protocol Buffers
sorah
0
520
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
32k
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
220
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
570
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Bash Introduction
62gerente
615
220k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
WENDY [Excerpt]
tessaabrams
14
40k
30 Presentation Tips
portentint
PRO
1
430
Fireside Chat
paigeccino
43
4.1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Large-scale JavaScript Application Architecture
addyosmani
516
110k
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 ͡Ίʹ ୯ମςετͱ ͳͥ୯ମςετΛߦ͏ͷ͔ ϑϩϯτΤϯυͷ୯ମςετ ͍͞͝ʹ
͍͞͝ʹ ɾ୯ମςετͬͯͳΜͳͷʁ ɾςετͷதͰҰͭͷ୯ҐΛςετ͢Δখ͍͞ςετ ɾͦͦͳΜͰ୯ମςετΛߦ͏ͷʁ ɾϓϩδΣΫτͷΛ࣋ଓՄೳͳͷʹ͢ΔͨΊ ɾϑϩϯτΤϯυʹ͓͚Δ୯ମςετͬͯʁ ɾෳࡶͳϩδοΫΛςετ͢Δͷʹ࠷ద શମͷ·ͱΊ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ͍͞͝ʹ