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
【Vitest5.0大解剖】Vitest5.0で増えた書き方
Search
赤神青空
PRO
September 06, 2026
Programming
12
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【Vitest5.0大解剖】Vitest5.0で増えた書き方
赤神青空
PRO
September 06, 2026
More Decks by 赤神青空
See All by 赤神青空
【Vitest5.0大解剖】Vitest5.0で静かに変わる挙動
akagami
PRO
0
7
【Vitest5.0大解剖】Vitest5.0のTrace View
akagami
PRO
0
12
【Vitest5.0大解剖】Vitest5.0は何が速くなったのか
akagami
PRO
0
19
1MBの壁にぶつかった話
akagami
PRO
0
24
Zod4.5を10分で
akagami
PRO
0
24
S3ライフサイクル入門
akagami
PRO
0
24
Viteはサーバーとクライアントを判定していない
akagami
PRO
0
30
【AWS RDS解説】待機系は読めるのか
akagami
PRO
0
26
OpenAI と Cursor、決裂までの3年
akagami
PRO
0
44
Other Decks in Programming
See All in Programming
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
2
960
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
200
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.3k
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
410
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
4
2.4k
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
1
180
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
130
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
52
33k
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.2k
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
130
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
400
The Limits of Empathy - UXLibs8
cassininazir
1
630
Large-scale JavaScript Application Architecture
addyosmani
515
110k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
The Language of Interfaces
destraynor
162
27k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
500
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
640
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
A Tale of Four Properties
chriscoyier
163
24k
Transcript
2026年9月 Vitest全5回5.0③ vi.when で増えた書き方 とベンチマーク 赤神 青空
▪mockImplementation vi.whenの中で引数を分岐する必要がなくなった — 引数ごとの振る舞い 引数は深い等価比較で照合され、 expect.any() などの非対称マッチャーも使える。 ts const findById
= vi.fn() vi.when(findById) .calledWith(1) .thenResolve({ id: 1, name: 'Ella' }) .calledWith(2) .thenResolve({ id: 2, name: 'Gracie' }) .calledWith(expect.any(Number)) .thenReject(new Error('not found')) 今ココ API 2/7
▪回数の制御と、消費されたかの検証 vi.when の周辺 、または times オプションで振る舞いの回数を制限できる toHaveBeenExhausted で、登録した振る舞いがすべて消費されたかを検証できる 詳しい使い分けは公式の Conditional
Mocking レシピにまとまっている thenReturnOnce 今ココ API 3/7
▪bench ベンチマークAPIの書き換え はトップレベル import ではなくなった bench はテストコンテキストのフィクスチャになり、通常の test() の中で使う。 ts
test('compare parsers', async ({ bench }) => { const result = await bench.compare( bench('JSON.parse', () => { JSON.parse('{"key":"value"}') }), bench('custom parser', () => { customParse('{"key":"value"}') }), ) expect(result.get('JSON.parse')).toBeFasterThan(result.get('custom parser')) }) 今ココ API 4/7
▪独立した存在から、テストの中の道具へ bench の位置づけが変わった Vitest 系 Vitest . parse.bench.ts parse.bench.ts bench()
※トップレベル import ベンチマークは、テストとは別の存在 出⼒もレポーターとは別扱い テストランナーの機能 ✕ フィクスチャ ✕ ライフサイクルフック ✕ リトライ‧フィルタ ✕ アサーション 使えない test(...) bench ※テストコンテキストの⼀部 テストランナーの機能 ◯ フィクスチャ ◯ ライフサイクルフック ◯ リトライ‧フィルタ ◯ アサーション そのまま使える∕出⼒は default‧json レポーターに含まれる テストコンテキストのフィクスチャになったことで、ランナーの機能が使える 今ココ API 5/7
▪比較と差し替え ベンチマークの周辺 で結果を保存し、 bench.from() でベースラインと比較できる 組み込みのTinybenchを、独自のベンチマークプロバイダに差し替えられる writeResult 今ココ API 6/7
▪ 第3回のまとめ 引数ごとのモックと、テストの中で書くベンチマーク。 vi.when 引数ごとの振る舞いを、分岐を書かずに定義できる。 bench フィクスチャになり、ランナーの機能がそのまま使える。 どちらも既存のテストを壊さない追加です。 今ココ おわりに
7/7