vue.js - 使用 RouterLinkStub 进行 Vue 快照测试不会按预期呈现 anchor

标签 vue.js jestjs vue-router snapshot vue-test-utils

我正在尝试在 Vue 应用程序中运行 jest-snapshot 测试,该应用程序的组件带有 router-link元素。
我正在使用 RouterLinkStub按照 Snapshot Testing with Vue-Router 中的建议

我的组件模板是这样的

<template>
  <section class="content">
    <div>
      <router-link to="/" v-slot="{ href, route, navigate }">
        <a :href="href" @click="navigate">
          Homepage
        </a>
      </router-link>
    </div>
  </section>
</template>

问题是在快照中,router-link呈现为空 anchor 元素 ( <a /> ),因此如果我更改链接文本,快照测试仍然会通过。

这是我的快照测试:

import { RouterLinkStub, shallowMount } from '@vue/test-utils'

import PageNotFound from 'views/PageNotFound.vue'

describe('PageNotFound.vue', () => {
  it('renders as expected', () => {
    const wrapper = shallowMount(PageNotFound, {
      stubs: {
        RouterLink: RouterLinkStub
      }
    })

    expect(wrapper.element).toMatchSnapshot()
  })
})

你能帮帮我吗? 谢谢

最佳答案

使用 Vue 3

 import { shallowMount, RouterLinkStub } from '@vue/test-utils'
 import router from '../../router'

 const findComponentRouterLink = () => 
   wrapper.findComponent(RouterLinkStub)

 const wrapper = shallowMount(Component, {
   global: {
        plugins: [router],
        stubs: {
          RouterLink: RouterLinkStub,
        },
      },
    })

 findComponentRouterLink().text()).toBe('Link text')

关于vue.js - 使用 RouterLinkStub 进行 Vue 快照测试不会按预期呈现 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60382364/

相关文章:

javascript - 在 vue 组件上提交表单时如何获取值单选按钮?

javascript - Vue 路由器程序化导航不起作用

javascript - 如何根据响应的行和列显示和禁用复选框?

javascript - VUE JS 图片从数组绑定(bind)

javascript - Vuejs - npm 版本补丁 - git 工作目录不干净

vue.js - Jest 无法加载模块 vue-cookies

javascript - 如何在 Jest 中为 ipcRenderer.on 和 ipcRenderer.send 编写单元测试?

react-native - 意外的 token ,预期 ";" Jest + react native 中的 enzyme

vue.js - Vuejs 热重载无法读取未定义的属性 'Ctor'

vue.js - VueJs 不会在浏览器后退按钮上重新加载 Javascript