TypeScript 対応
jest の型を追加
yarn add -D @types/jest@27.0.0
tsconfig.json の types に “jest” を追加
{ /* 略 */ "types": [ /* 中略 */ "jest"] }
#メモ: jest のバージョンを 28以上にあげると、jest.config.js の testEnvironment に jsdom を指定するには jest-environment-jsdom の追加が必要だったが、jest 28以上はtypescript のバージョンが 4.3 以上だったので、 jest は 27系 を維持。
#typescript のバージョンは 4.2.4 。
types/vue-shim.d.ts の追加(なければ)
これがないと テストファイル内の vue ファイルのimport でこける
declare module '*.vue' { import Vue from 'vue' export default Vue }
@nuxtjs/composition-api のバージョンを更新
@nuxtjs/composition-api のバージョンが ^0.32.0 でなんかうまく動かなかったので、最新( ^0.33.1 ) に更新。
また、この更新によって、いったん unplugin-vue2-script-setup が 依存関係から抜けるので、改めて以下を実行
また、この更新によって、いったん unplugin-vue2-script-setup が 依存関係から抜けるので、改めて以下を実行
yarn add -D unplugin-vue2-script-setup
他、つまづいたところ
ググると、jest.config.js の moduleNameMapper に
'@nuxtjs/composition-api': '@nuxtjs/composition-api/lib/entrypoint.js'
の追加が必要、という記事がみつかるが、私の環境では不要だった。
テストファイル作成
provide/inject
#エラーがでなくなったけどこれ期待どおり動いてるんかな…
import { mount } from '@vue/test-utils' import ComponentName from '@/components/hoge.vue' import useHoge, { UseHogeKey } from '@/composables/useHoge' describe('ComponentName', () => { test('is a Vue instance', () => { const wrapper = mount(ComponentName, { provide: { [UseHogeKey as symbol]: useHoge(), }, }) expect(wrapper.vm).toBeTruthy() }) })