更新:更一致的解决方案
tl;博士:
我发现始终有效的解决方案是创建一个localVue
(通常在块的范围之外describe()
)并将其添加RoutherLinkStub
为组件。
import { mount, RouterLinkStub, createLocalVue } from '@vue/test-utils';
const localVue = createLocalVue();
localVue.component('router-link', RouterLinkStub);
const wrapper = mount(Component, { localVue });
该文档并没有使解决方案显而易见,因为它似乎是您链接到的页面和关于RouterLinkStub的页面的混合体。
从该页面:
import { mount, RouterLinkStub } from '@vue/test-utils'
const wrapper = mount(Component, {
stubs: {
RouterLink: RouterLinkStub
}
})
该解决方案在大多数情况下都有效。如果您有需要使用的情况,mount
并且您router-link
不在被测试的组件中,而是在它下面的组件中,您仍然会收到该警告。现在,如果您处于这种情况,那么值得反思一下您是否正确编写了测试(您是否测试太多而不是一个小单元?),但我有一两种情况,如果我shallow
不是mount
,快照测试毫无价值,因为它将子代渲染为<!----> when I call
expect(wrapper.html()).toMatchSnapshot()`。
关于快照测试的注意事项:
我实际上还没有看到人们使用该Wrapper.html()
方法进行快照测试的示例,但它确实似乎是我实验中最好的解决方案。vue-server-renderer
对于看起来相同的结果来说,这是一个漫长的过程。访问 的vm
属性可以Wrapper
让您访问该$el
属性,没有太多麻烦,但这只是html()
.