wrapper.vm
が使えない時のスナップショット取得方法(Composition API におけるスナップショットテスト)
Composition API では
ref
や computed
で宣言した値は wrapper.vm
には存在しないvm
に依存したスナップショットテストができない✅ そこで
→ wrapper.html()
などを使って、実際の DOM 出力をスナップショットにする
→ DOM構造をそのまま写真(スナップショット)として保存するイメージ。
// ❌ vm を直接確認できた
expect(wrapper.vm.double).toBe(6);
expect(wrapper.vm.count).toBe(3);
expect(wrapper.html()).toMatchSnapshot();
import { shallowMount } from '@vue/test-utils';
import Counter from '@/components/Counter.vue';
describe('Counter.vue (Composition API)', () => {
it('初期表示のスナップショット', () => {
const wrapper = shallowMount(Counter);
expect(wrapper.html()).toMatchSnapshot(); // ← DOM 出力をスナップショット化
});
});
<!-- Counter.vue -->
<template>
<div>
<p>{{ count }}</p>
<button @click="increment">+</button>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const count = ref(0);
const increment = () => {
count.value += 1;
};
</script>