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
440
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Reactにおける 良いコンポーネントテストとはなにか
skanehira
December 22, 2025
More Decks by skanehira
See All by skanehira
vimconf2025.pdf
skanehira
0
44
findy-ai-terminal.pdf
skanehira
2
510
Rustから学ぶ 非同期処理の仕組み
skanehira
1
420
about_gorilla.vim.pdf
skanehira
0
140
if let temporary scopeについて
skanehira
0
210
build-debugger-in-rust.pdf
skanehira
1
280
Findy感謝祭2024 LT
skanehira
0
160
Rustではじめる負荷試験
skanehira
6
2.5k
Wellcome Vim World
skanehira
3
680
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
460
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
220
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Discover your Explorer Soul
emna__ayadi
2
1.2k
Ruling the World: When Life Gets Gamed
codingconduct
0
280
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Mind Mapping
helmedeiros
PRO
1
280
Balancing Empowerment & Direction
lara
6
1.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
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で取れる = アクセシビリティを担保&実装詳細に依存しない
• ユーザーに見える結果をテスト • 内部実装は変わっても振る舞いは変わらないのでテストが壊れない 良いコンポーネントテストとはなにか
ありがとうございました