微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jest/Vue 测试工具 - 来自子组件作用域插槽的方法 - [Vue 警告]:事件“单击”的无效处理程序:未定义

如何解决Jest/Vue 测试工具 - 来自子组件作用域插槽的方法 - [Vue 警告]:事件“单击”的无效处理程序:未定义

我正在尝试测试调用子组件(即 b-modal)的组件之一。

我测试的组件使用来自 b-modal 的作用域槽来从中获取 close() 方法并将其附加到另一个事件侦听器。看看:

// My custom parent component
<template>
    <b-modal>
        <template #modal-header="{close}">
            <h2 class="card-header-title">
                Coordonnées
            </h2>
            <button class="close close-profile text-dark" @click="close">
                <i class="far fa-times" />
            </button>
        </template>
    </b-modal>
</template>

在我的测试中,我像这样安装我的组件:

return shallowMount(MyCustomParentComponent,{
    ...options,localVue,store,stubs: [
        "b-modal"
    ],});

我的测试通过了,但 Jest 抛出了 console.error 警告:

[Vue warn]: Invalid handler for event "click": got undefined
      
      found in
      
      ---> <Anonymous>
             <Root>
      

我猜我的 b-modal 子组件没有完全挂载(stub、shallowMount)并且没有注入 close() 方法

我能做什么?我应该模拟 close() 方法吗?沉警告?还有什么?

感谢您的帮助!

解决方法

您可以自定义 b-modal 的存根,使用模拟 modal-header 渲染 close() 插槽:

it('should call close() on button click',async () => {
  const close = jest.fn()
  const ok = jest.fn()
  const cancel = jest.fn()
  const wrapper = shallowMount(MyModal,{
    stubs: {
      BModal: {
        render(h) {
          return h('div',[
                            this.$scopedSlots['modal-header']?.({close}),this.$scopedSlots['default']?.({ok,cancel})
                          ]
                  )
        }
      }
    }
  });
  await wrapper.find('button.close').trigger('click')
  expect(close).toHaveBeenCalled()
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?