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
45
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
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Prompt Engineering for Job Search
mfonobong
0
380
Navigating Weather and Climate Data
rabernat
0
420
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
400
Producing Creativity
orderedlist
PRO
348
40k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
How to train your dragon (web standard)
notwaldorf
97
6.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Typedesign – Prime Four
hannesfritz
42
3.1k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
640
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で取れる = アクセシビリティを担保&実装詳細に依存しない
• ユーザーに見える結果をテスト • 内部実装は変わっても振る舞いは変わらないのでテストが壊れない 良いコンポーネントテストとはなにか
ありがとうございました