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
Reactにおける 良いコンポーネントテストとはなにか
Search
skanehira
December 22, 2025
430
1
Share
Reactにおける 良いコンポーネントテストとはなにか
skanehira
December 22, 2025
More Decks by skanehira
See All by skanehira
vimconf2025.pdf
skanehira
0
41
findy-ai-terminal.pdf
skanehira
2
500
Rustから学ぶ 非同期処理の仕組み
skanehira
1
390
about_gorilla.vim.pdf
skanehira
0
130
if let temporary scopeについて
skanehira
0
200
build-debugger-in-rust.pdf
skanehira
1
270
Findy感謝祭2024 LT
skanehira
0
150
Rustではじめる負荷試験
skanehira
6
2.4k
Wellcome Vim World
skanehira
3
670
Featured
See All Featured
Crafting Experiences
bethany
1
130
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
120
Facilitating Awesome Meetings
lara
57
6.8k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Ethics towards AI in product and experience design
skipperchong
2
260
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
53k
Producing Creativity
orderedlist
PRO
348
40k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
520
Everyday Curiosity
cassininazir
0
200
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
180
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
Transcript
Reactにおける 良いコンポーネントテストとはなにか
自己紹介 ゴリラです。 株式会社テックリードという会社をやってい ます。 主にフロントエンド・バックエンドエンジニ アとして仕事しています。 好物は Vim, Go, Rust,
TypeScript, Deno, Wasm などです。 最近はeBPFに興味あります。 YDPN [FOOEFW (JU)VC
はじめに • 普段は業務委託でシステム開発のお手伝いしている • ここ2年くらいはVue 2からReact移行の作業をしている • Reactの知見持っている人がほぼいなかったので、チーム内でいろい ろと試行錯誤しながらやってきた •
今日は得られた知見の中で、主にコンポーネントテストについて話 ていく
Reactのテストのおさらい
Reactにおけるテスト対象 • 関数 • ステートを持たない再利用可能なロジック • 実装によるが基本的に外部への依存がない純粋関数が多い
• カスタムフック • ステートと再利用可能なロ ジックを持つ • 外部ストレージやグローバル ステートを参照する場合もあ る •
render hooksパターンでUIを 返すこともある Reactにおけるテスト対象
• コンポーネント • UI/ステート/ロジックを持つ • ユーザ操作によって状態が変わ り、UIに反映される • 関数とカスタムフックと違って UIがあるためテストが少し複雑
になりやすい Reactにおけるテスト対象
良いコンポーネントテスト とはなにか
• 10文字以上入力できない制限を持つNameInputのテスト • 実装: maxLengthの属性で入力文字数の制限をしている 良いコンポーネントテストとはなにか
• 問題 • テストが実装詳細に依存している • maxLengthからJSで入力制御に切り替えたときにテスト壊れる 良いコンポーネントテストとはなにか
• あるべき姿 • 実装詳細に依存しない、外からみえる振る舞いをテストすべき • 振る舞い = 仕様が変わらない限り、実装を変えても壊れない 良いコンポーネントテストとはなにか
• Propsで受け取ったテキストを表示しているかのテスト • 問い: このテストは何を保証しているのか? 良いコンポーネントテストとはなにか
• 問題: Reactの機能をテストしているだけ • `<h1>{title}</h1>`が表示されないことはReactがバグらない限 り、基本的にない 良いコンポーネントテストとはなにか
• あるべき姿 • ロジックがあるならテストする • なければテストしない 良いコンポーネントテストとはなにか
• data-testid を使って要素を特定してテストしている 良いコンポーネントテストとはなにか
• 問題 • 実装詳細(data-testid)に依存している • アクセシビリティを担保しづらい 良いコンポーネントテストとはなにか
• あるべき姿 • data-testidは最終手段 • アクセシビリティを意識した実装になる 良いコンポーネントテストとはなにか
まとめ
• ロジックがあるものをテスト • 透過するだけではReactの仕事 • ユーザーが使える方法で要素を探す • roleで取れる = アクセシビリティを担保&実装詳細に依存しない
• ユーザーに見える結果をテスト • 内部実装は変わっても振る舞いは変わらないのでテストが壊れない 良いコンポーネントテストとはなにか
ありがとうございました