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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
赤神青空
PRO
September 06, 2026
Programming
7
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
12
【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
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
250
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
190
typoなんかねぇよ
raspython3
0
650
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.4k
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
610
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.4k
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
Flow は今どうなっているか
mizdra
PRO
0
850
What We Talk About When We Talk About XP
m_seki
2
150
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
200
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
高専キャリア LT 発表内容
crysta1221
6
5.4k
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
880
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
550
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
480
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
490
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
230
Facilitating Awesome Meetings
lara
57
7.1k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Transcript
2026年9月 Vitest 5.0全5回で静かに変わる挙動 ④ 既定値とアサーション 赤神 青空
▪各テストの前に clearMocks が既定で true に vi.clearAllMocks() が走る これまで(4系) モックの呼び出し履歴がテストをまたいで残る 実行順に依存するテストが生まれやすい
順序依存のテストを生む代表的な原因だった これから(5.0) 履歴は毎テスト前にクリアされる 実装は保持されるので、差し替えは残る {'従来の挙動に戻すなら clearMocks': 'false '} 既定値の変更なので、設定を書き換えていなくても挙動が変わります。 今ココ 挙動の変更 2/6
▪4系では警告のうえ、テストは通っていた await し忘れたアサーションが失敗になる resolves / rejects / toMatchFileSnapshot が対象。 ts
test('unawaited assertion', async () => { expect(promise).resolves.toBe(1) // 5.0 では失敗する await expect(promise).resolves.toBe(1) // これが正しい }) 今ココ 挙動の変更 3/6
▪確定しないまま待ち続けることがなくなった expect.poll がタイムアウトで reject する コールバックが AbortSignal を受け取るので、実行中の処理を打ち切れる。 ts await
expect.poll(async ({ signal }) => { const response = await fetch('/api/status', { signal }) return response.status }, { timeout: 1000 }).toBe(200) 今ココ 挙動の変更 4/6
▪Date と並んで、既定で対象に入った フェイクタイマーが Temporal もモックする vi.useFakeTimers() にも、フェイクタイマー無しの vi.setSystemTime() にも効く。 ts
vi.setSystemTime(0) Temporal.Now.instant().epochMilliseconds // 0 // 対象から外すなら toNotFake に Temporal を足す 今ココ 挙動の変更 5/6
▪ 第4回のまとめ ここはコードを直さなくても結果が変わるところ。 既定値 clearMocks が true。 Temporal もモック対象。 アサーション
await 漏れは失敗。 expect.poll はタイムアウトで reject。 上げたあとにテストが落ちたら、まずこの4つを疑ってください。 今ココ おわりに 6/6