Vue测试返回错误wrapper.findComponent不是函数

问题描述

我在Vue中进行了测试:

import { shallowMount } from '@vue/test-utils'
import InputComponent from '@/modules/nsignalsimfrontend/components/inputs/InputComponent'
import 'regenerator-runtime/runtime'

describe('InputComponent.vue',() => {
    it('test',async () => {
        const $t = () => {}
        const value = 'Foo'
        const wrapper = shallowMount(InputComponent,{
            mocks: { $t },propsData: {
                value,},})
        
        expect(wrapper.props().value).toBe(value)

        const input = wrapper.findComponent({ ref: 'input' })
        input.element.value = value
        await input.trigger('keyup.enter')

        expect(wrapper.emitted().submit).toBeTruthy()
        expect(wrapper.emitted().submit[0][0]).toEqual(value)
    })
})

当我在本地运行此测试时,可以正常工作,但是当我尝试通过Jenkins构建应用程序时(在构建中我有npm run test:unit),我遇到了一个错误

wrapper.findComponent不是函数

我有@ vue / test-utils版本1.0.3

解决方法

我遇到了同样的问题。将@vue/test-utils 从 1.0.0-beta.31 升级到 1.1.2 为我解决了这个问题。

,

我在 1.0.0-beta.29 的 @vue/test-utils 上遇到了同样的问题,但您可以使用 wrapper.find() 来通过 ref 进行选择。 示例:wrapper.find({ ref: 'input'}) 如果你想按组件查找,你可以只用 wrapper.find(Component)