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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
みき
August 30, 2024
Programming
0
300
フロントエンドの単体テスト
みき
August 30, 2024
Tweet
Share
More Decks by みき
See All by みき
AIの特性から考える よりよりAIの活用法
takecantik
0
11
Other Decks in Programming
See All in Programming
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
720
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
1
110
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.6k
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
270
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.3k
Raku Raku Notion 20260128
hareyakayuruyaka
0
330
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
140
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
590
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
810
Docker and Python
trallard
47
3.7k
We Are The Robots
honzajavorek
0
160
How to build a perfect <img>
jonoalderson
1
4.9k
Designing for Performance
lara
610
70k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3k
Facilitating Awesome Meetings
lara
57
6.8k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
440
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
120
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 ͡Ίʹ ୯ମςετͱ ͳͥ୯ମςετΛߦ͏ͷ͔ ϑϩϯτΤϯυͷ୯ମςετ ͍͞͝ʹ
͍͞͝ʹ ɾ୯ମςετͬͯͳΜͳͷʁ ɾςετͷதͰҰͭͷ୯ҐΛςετ͢Δখ͍͞ςετ ɾͦͦͳΜͰ୯ମςετΛߦ͏ͷʁ ɾϓϩδΣΫτͷΛ࣋ଓՄೳͳͷʹ͢ΔͨΊ ɾϑϩϯτΤϯυʹ͓͚Δ୯ମςετͬͯʁ ɾෳࡶͳϩδοΫΛςετ͢Δͷʹ࠷ద શମͷ·ͱΊ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ͍͞͝ʹ