Как найти componets elementUi во время модульного тестирования, используя vue-test-utils с shallowMount? - PullRequest
0 голосов
/ 14 апреля 2019

После прочтения документа vue-test-utils я пытаюсь передать.

Надеюсь, что кто-то может очистить мое замешательство.

import { mount, shallowMount } from '@vue/test-utils'
import Vue from 'vue'
import Form from '@/components/Form/index.vue'
import ElementUI from 'element-ui'

Vue.use(ElementUI)
describe('Form.vue', () => {

  //find it, pass
  it('mount', () => {
    const wrapper = mount(Form)
    const elButton = wrapper.find('.el-button')
    expect(elButton.isVueInstance()).toBe(true)
  })

  //can't find it, fail
  it('shallowMount', () => {
    const wrapper = shallowMount(Form)
    const elButton = wrapper.find('.el-button')
    expect(elButton.isVueInstance()).toBe(true)
  })
})

Я могу найти компоненты, заданные elementui, когда использую 'mount'.

Но, возможно, иногда мне нужно будет использовать 'shallowMount'.

Как мне найти компоненты в этой ситуации?

Заранее спасибо.




Спасибо за ответ, Я нашел два подхода, чтобы исправить это:

it('shallowMount', () => {
      const wrapper = shallowMount(Form)
      const elButton = wrapper.find(ElementUI.Button)
      expect(elButton.isVueInstance()).toBe(true)
    })
it('shallowMount', () => {
      const wrapper = shallowMount(Form)
      const elButton = wrapper.find({ name: 'ElButton' })
      expect(elButton.isVueInstance()).toBe(true)
    })

1 Ответ

1 голос
/ 14 апреля 2019

Когда вы используете shallowMount, дочерние компоненты будут заглушены, а не визуализированы. Вот почему вы не можете найти его во втором тесте так, как вы делаете.

Один из вариантов сделать так, как указано здесь: https://lmiller1990.github.io/vue-testing-handbook/stubbing-components.html#automatically-stubbing-with-shallowmount

  it('shallowMount', () => {
    const wrapper = shallowMount(Form)
    expect(wrapper.find(ElButtonComponent).exists()).toBe(true)
  })

...