Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【Vitest5.0大解剖】Vitest5.0で増えた書き方

 【Vitest5.0大解剖】Vitest5.0で増えた書き方

Avatar for 赤神青空

赤神青空 PRO

September 06, 2026

More Decks by 赤神青空

Other Decks in Programming

Transcript

  1. ▪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
  2. ▪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
  3. ▪独立した存在から、テストの中の道具へ bench の位置づけが変わった Vitest 系 Vitest . parse.bench.ts parse.bench.ts bench()

    ※トップレベル import ベンチマークは、テストとは別の存在 出⼒もレポーターとは別扱い テストランナーの機能 ✕ フィクスチャ ✕ ライフサイクルフック ✕ リトライ‧フィルタ ✕ アサーション 使えない test(...) bench ※テストコンテキストの⼀部 テストランナーの機能 ◯ フィクスチャ ◯ ライフサイクルフック ◯ リトライ‧フィルタ ◯ アサーション そのまま使える∕出⼒は default‧json レポーターに含まれる テストコンテキストのフィクスチャになったことで、ランナーの機能が使える 今ココ API 5/7