vue-cli 3.0 集成 jest 单元测试 组件中获取dom宽度代码报错

发布于 2022-09-11 17:59:05 字数 1619 浏览 19 评论 0

vue 用 jest 单元测试,组件中用到了某个dom元素的宽度 clientWidth,但是在跑单元测试的时候无法通过 window.querySelect 获取到这个元素,放在 nextTick 中也不行。

clipboard.png

xxx.vue 代码

...
methods {
    resize () {
      let width = document.querySelector('#m-editor').clientWidth;
      let editTools = document.querySelector('.edit-tools');
      if (width > 780) {
        editTools.style.width = '600px';
      } else if (680 < width) {
        editTools.style.width = '480px';
      } else if (640 < width) {
        editTools.style.width = '400px';
      } else if (500 < width) {
        editTools.style.width = '320px';
      } else if (width < 500) {
        editTools.style.width = '0';
      }
    },
    ...
   }

测试代码

import { shallowMount } from '@vue/test-utils'
// import HelloWorld from '@/components/HelloWorld.vue'

// describe('HelloWorld.vue', () => {
//   it('renders props.msg when passed', () => {
//     const msg = 'new message'
//     const wrapper = shallowMount(HelloWorld, {
//       propsData: { msg }
//     })
//     expect(wrapper.text()).toMatch(msg)
//   })
// })
import markdownEditor from '@/components/markdownEditor.vue'

describe('markdownEditor.vue', () => {
  it('renders props.input when passed', () => {
    const msg = '# hello world'
    const wrapper = shallowMount(markdownEditor, {
      propsData: { value: msg }
    })
    wrapper.vm.$nextTick(() => {
      expect(wrapper.html()).toMatch('<h1>hello world</h1>')
    })
  })
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文