【发布时间】:2021-10-16 04:40:42
【问题描述】:
在带有 Composition API(和 Vue 3)的 .vue 文件中,设置路由器:
const router = useRouter()
在开玩笑测试中挂载 .vue 文件:
const wrapper = mount(Lookup)
执行时,产生:
console.warn
[Vue warn]: injection "Symbol([vue-router]: router)" not found.
at <Anonymous ref="VTU_COMPONENT" >
at <VTUROOT>
模拟它会产生相同的输出:
useRouter().push = jest.fn()
设置provide 会产生相同的输出:
import { useRouter } from 'vue-router'
...
const wrapper = mount(Lookup, {
global: {
plugins: [useRouter],
provide: {
router: {},
},
},
})
【问题讨论】:
-
useRouter不是插件,因此不应在global.plugins中。显示您在组件中使用useRouter()的更多上下文。 -
@tony19
useRouter()在本示例的组件中完全未使用。仅当 Jest 挂载它时,组件内的声明才会中断。如果我在组件中添加对它的使用(这不会影响 Jest 的当前结果),它会在组件中按预期工作。 -
没有足够的上下文来重现问题。你能分享一个复制的链接吗?
标签: vue.js jestjs vue-router