wrapper.setValue

分享于2022年07月17日 babel-jest jestjs node.js unit-testing vue.js 问答
【问题标题】:wrapper.setValue() 不能在 EL-INPUT 上调用(wrapper.setValue() cannot be called on EL-INPUT)
【发布时间】:2022-06-10 22:51:24
【问题描述】:

我正在尝试使用 Jest 调用 Vue 组件进行单元测试,我希望它为输入文本字段设置值。这是我的“file.vue”


              
              
{{ error.$message }}

我的测试代码是

 it('Set value',async()=> {
    const wrapper = shallowMount(ModalNuevaCaja)

    const input = wrapper.find('[data-test="nombre_caja"]')

    await input.setValue({nombre:'New value'})

    expect(input.element.value).toBe('New Value')

错误信息是:

wrapper.setValue() cannot be called on EL-INPUT

      26 |     const input = wrapper.find('[data-test="nombre_caja"]')
      27 |
    > 28 |    await input.setValue({nombre:'New value'})
         |                ^
      29 |
      30 |    expect(input.element.value).toBe('New value')
      31 |

我是新来的,如果有任何建议,我将不胜感激。谢谢!!


【解决方案1】:

wrapper.find() 返回一个 DOMWrapper DOMWrapper 上的 setValue() 实现只允许您在 input textarea 、'select` 等上使用它。

您应该使用 findComponent() 来检索 VUEWrapper ,您可以在其上调用 setValue()

 it('Set value', async () => {
    const wrapper = shallowMount(ModalNuevaCaja)

    const input = wrapper.findComponent('[data-test="nombre_caja"]')

    await input.setValue('New value')

    expect(input.element.value).toBe('New Value')
})