Composition API への書き換えで
Jest の設定や基本的な構文は変わらない。
変わるのは 「テスト対象コードのアクセス方法」。
→ 特に wrapper.vm
依存の箇所と
→ Vuex (store)
の使い方が書き換え対象。
項目 | そのままでOK | 補足 |
---|---|---|
jest.config.js |
変更不要 | ts-jest , vue-jest そのまま |
describe , it , test |
変更不要 | 基本的な Jest の構文 |
expect , 各種マッチャ |
変更不要 | toBe , toEqual , toContain なども同じ |
スナップショット設定 | 変更不要 | toMatchSnapshot() そのまま使える |
内容 | クラスコンポーネント | Composition API | 書き換えポイント |
---|---|---|---|
data , computed , methods の確認 |
wrapper.vm.プロパティ |
DOM (text() , find() ) を通して確認 |
vm 依存をやめる → 出力をチェック |
methods の実行 |
wrapper.vm.increment() |
trigger('click') などイベントで動かす |
手で呼ばずにユーザー操作を再現 |
Vuex の使い方 | this.$store.dispatch('action') |
useStore().dispatch('action') |
useStore() をモックする |
Vuex モック方法 | actions: { increment: jest.fn() } |
useStore を jest.mock で置き換える |
useStore のモック関数を作成 |
Before (クラス):
wrapper.vm.count
wrapper.vm.double
wrapper.vm.increment()
After (Composition):
wrapper.text() ← 表示された数値を見る
wrapper.find('button').trigger('click') ← イベントで動かす
やっていたこと | 書き換え後 |
---|---|
expect(wrapper.vm.count).toBe(1) |
expect(wrapper.text()).toContain('1') |
wrapper.vm.increment() |
await wrapper.find('button').trigger('click') |
expect(wrapper.vm.double).toBe(2) |
expect(wrapper.text()).toContain('2') |