Nuxt 和 pinia 的 Vitest 设置自动导入

问题描述 投票:0回答:1

我正在尝试设置

vitest
+
@vue/test-utils
但我无法测试一些使用
ref
(Vue) 或
useCookie
(Nuxt) 的组件,我在导入 Pinia 时也遇到了同样的问题nuxt.config.js 中的全局 2 个函数像这样

[
  '@pinia/nuxt',
  {
    autoImports: ['defineStore', 'acceptHMRUpdate'],
  }
] 

这是我的 vitest.config.js 设置:

import { defineConfig } from "vite"
import vue from "@vitejs/plugin-vue"
import AutoImport from 'unplugin-auto-import/vite'
import path from 'path'

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      imports: ['vue'],
      dirs: ['./composables/']
    })
  ],
  test: {
    globals: true,
    environment: 'jsdom',
    coverage: {
      provider: 'c8',
      reporter: 'html',
      reportsDirectory: './coverage'
    },
  resolve: {
    alias: {
      '~': path.resolve(__dirname, './')
    }
  },
})

我要测试的组件是这样的:

<script setup>
import AButton from '~/components/atoms/a-button/a-button.vue'
...

defineProps({
  label: {
    type: String,
    required: true
  },
})

const show = ref(false)

const Squad = useCookie('squad', { maxAge: 60 * 60 * 24 * 7 })
const appStore = useAppStore()

在 Nuxt 3 中,如您所知,您不知道

import { ref } from vue
... useCookie from..
它们是自动导入的,但
vitest
不认识它们,我看到了几个问题,但没有一个答案可以解决我的问题。

这些是一些:

nuxt.js pinia vitest
1个回答
1
投票

我在 refs 和 Nuxt 3 上遇到了同样的问题,我通过使用 unplugin-auto-import/vite 解决了这个问题

安装完成后,将AutoImport配置添加到vitest.config.ts:

import vue from "@vitejs/plugin-vue";
import AutoImport from "unplugin-auto-import/vite";

export default {
  plugins: [
    vue(),
    AutoImport({
      imports: ["vue"],
    }),
  ],
  test: {
    globals: true,
    environment: "jsdom",
  },
  coverage: {
    all: true,
  },
};
© www.soinside.com 2019 - 2024. All rights reserved.