Vue Test Utils + Jest 环境下全局Mixin不生效问题求解
问题原因
核心问题是mount方法的配置项键名错误。Vue Test Utils 规定自定义localVue实例需要用固定键localVue传入挂载配置,你将创建的localVue实例命名为App后直接传入配置,框架无法识别该自定义字段,导致你在实例上注册的全局混入、插件都没有生效。
修正方案
将挂载配置里的App改为localVue即可,示例代码如下:
import { createLocalVue, mount } from '@vue/test-utils' import {gc} from '.....'; // 其余导入省略 const localVue = createLocalVue() localVue.use(/* 你用到的其他插件 */) localVue.mixin({ methods: { gc: key => gc(key) } }) export const Wrapper = mount(AppComponent, { localVue, // 这里必须用localVue作为配置键,不能自定义名称 i18n, router, store, // 其余配置省略 })
如果你不想修改已有的App变量名,也可以把配置改成localVue: App,只要保证配置键是localVue即可。
补充排查点(修改后仍报错可排查)
- 确认项目环境是Vue2 + Vue Test Utils v1.x:如果是Vue3 + VTU v2.x的环境,
createLocalVue已经被废弃,需要改用global配置项注入全局混入,写法如下:
// Vue3环境下的写法 import { mount } from '@vue/test-utils' import {gc} from '.....' export const Wrapper = mount(AppComponent, { global: { mixins: [ { methods: { gc: key => gc(key) } } ], plugins: [i18n, router, store] // 其余全局配置 } })
- 确认
gc方法的导入路径正确,没有导入undefined的情况。
内容的提问来源于stack exchange,提问作者user8555937
相关产品推荐
相关产品推荐

