单元测试包含 vuetify 的 vue 组件

Posted

技术标签:

【中文标题】单元测试包含 vuetify 的 vue 组件【英文标题】:Unit testing vue component containing vuetify 【发布时间】:2020-08-02 05:58:37 【问题描述】:

例如,如何在你的组件内部触发 v-autocomplete 中的 change 事件,以便我

我尝试了类似的方法:

import SomethingAutocomplete from "@/components/SomethingAutocomplete.vue";
import  shallowMount  from "@vue/test-utils";
import  VAutocomplete  from "vuetify/lib";
import  Constructor  from "vue/types/options";

test("Some test", async () => 
  const wrapper = shallowMount(SomethingAutocomplete);
  let ac = wrapper.find(<Constructor>VAutocomplete);
  ac.trigger("input");
  await wrapper.vm.$nextTick();
  ...
  <handler was never called>
);

有什么提示吗? TIA。

【问题讨论】:

输入是一个事件。我想您想在父组件中捕获它。你试过ac.vm.$emit("input", valueOfTheInput); 而不是ac.trigger("input"); 吗? 在您的代码中也写了trigger("input"),但您在解释中写了“更改事件”。究竟是什么活动? ac.vm.$emit("change") 工作!抱歉,我在帖子上写的示例中混淆了。谢谢! 【参考方案1】:

trigger() 仅用于触发组件内部的事件。由于这里我们要检查子组件发出的事件的行为,因此我们需要将事件发送到父组件。 所以这将完成这项工作:

ac.vm.$emit("input", valueOfTheInput);

【讨论】:

以上是关于单元测试包含 vuetify 的 vue 组件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jest 对 Vuetify 数据表进行单元测试

在 Nuxt、Vue、jest 和 Vuetify 中为项目编写单元测试

使用 Jest、Vue、Vuetify 和 Pug 运行单元测试

Vue,vuex:如何使用命名空间存储和模拟对组件进行单元测试?

事件点击单元测试VUE

Vue/Typescript/Jest - Jest 单元测试语法错误:意外的令牌导入