$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
フロントエンドの単体テスト
Search
みき
August 30, 2024
Programming
0
300
フロントエンドの単体テスト
みき
August 30, 2024
Tweet
Share
More Decks by みき
See All by みき
AIの特性から考える よりよりAIの活用法
takecantik
0
6
Other Decks in Programming
See All in Programming
Duke on CRaC with Jakarta EE
ivargrimstad
0
340
スタートアップを支える技術戦略と組織づくり
pospome
8
13k
DSPy Meetup Tokyo #1 - はじめてのDSPy
masahiro_nishimi
1
110
Herb to ReActionView: A New Foundation for the View Layer @ San Francisco Ruby Conference 2025
marcoroth
0
210
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
5
1.1k
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
200
[堅牢.py #1] テストを書かない研究者に送る、最初にテストを書く実験コード入門 / Let's start your ML project by writing tests
shunk031
11
6.3k
Reactive Thinking with Signals and the new Resource API
manfredsteyer
PRO
0
140
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
710
All(?) About Point Sets
hole
0
230
dotfiles 式年遷宮 令和最新版
masawada
1
220
Rails Girls Sapporo 2ndの裏側―準備の日々から見えた、私が得たもの / SAPPORO ENGINEER BASE #11
lemonade_37
2
200
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Rails Girls Zürich Keynote
gr2m
95
14k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Mobile First: as difficult as doing things right
swwweet
225
10k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Facilitating Awesome Meetings
lara
57
6.6k
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 ͡Ίʹ ୯ମςετͱ ͳͥ୯ମςετΛߦ͏ͷ͔ ϑϩϯτΤϯυͷ୯ମςετ ͍͞͝ʹ
͍͞͝ʹ ɾ୯ମςετͬͯͳΜͳͷʁ ɾςετͷதͰҰͭͷ୯ҐΛςετ͢Δখ͍͞ςετ ɾͦͦͳΜͰ୯ମςετΛߦ͏ͷʁ ɾϓϩδΣΫτͷΛ࣋ଓՄೳͳͷʹ͢ΔͨΊ ɾϑϩϯτΤϯυʹ͓͚Δ୯ମςετͬͯʁ ɾෳࡶͳϩδοΫΛςετ͢Δͷʹ࠷ద શମͷ·ͱΊ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ͍͞͝ʹ