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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
skanehira
December 22, 2025
1
410
Reactにおける 良いコンポーネントテストとはなにか
skanehira
December 22, 2025
Tweet
Share
More Decks by skanehira
See All by skanehira
vimconf2025.pdf
skanehira
0
29
findy-ai-terminal.pdf
skanehira
2
480
Rustから学ぶ 非同期処理の仕組み
skanehira
1
340
about_gorilla.vim.pdf
skanehira
0
120
if let temporary scopeについて
skanehira
0
190
build-debugger-in-rust.pdf
skanehira
1
260
Findy感謝祭2024 LT
skanehira
0
150
Rustではじめる負荷試験
skanehira
6
2.2k
Wellcome Vim World
skanehira
3
660
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
200
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
110
The agentic SEO stack - context over prompts
schlessera
0
630
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
430
BBQ
matthewcrist
89
10k
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で取れる = アクセシビリティを担保&実装詳細に依存しない
• ユーザーに見える結果をテスト • 内部実装は変わっても振る舞いは変わらないのでテストが壊れない 良いコンポーネントテストとはなにか
ありがとうございました