【发布时间】:2021-02-18 07:45:16
【问题描述】:
我是 Jest 的新手,正在尝试为我的 Vue 应用程序编写一个测试,以确认子组件发出一个事件,结果,它的 prop 值得到更新。
作为一个例子,我制作了一个带有计数器的简单应用来演示:
/* Parent Home.vue */
<template>
<Counter :count="count" @increment="count++"/>
</template>
<script>
import Counter from "@/components/Counter.vue";
export default {
components: { Counter },
data: () => ({
count: 0,
}),
};
</script>
/* Child Counter.vue */
<template>
<v-container>
<div id="propTracker">{{ count }}</div>
<v-btn ref="incrementProp" @click="increment($event)">Increase prop</v-btn>
</v-container>
</template>
<script>
export default {
props: ["count"],
methods: {
increment() {
this.$emit("increment");
},
},
};
</script>
一旦Counter 中的按钮被按下,它应该发出一个increment 事件来增加父Home 组件中的计数。
这是我写的测试:
it("Click should increment count text", async () => {
const wrapper = mount(Counter, {
localVue,
vuetify,
propsData: { count: 0 },
});
expect(wrapper.find("#propTracker").text()).toBe("0"); //initial state
const button = wrapper.find({ ref: "incrementProp" });
await button.trigger("click"); //trigger click
expect(wrapper.find("#propTracker").text()).toBe("1"); //after click
});
它返回为Expected: "1" Received: "0",表示在测试中未处理道具更新。我尝试结合许多资源,例如 Vue 指南 here 和 Vuetify 单元测试信息 here,但它始终保持不变。我错过了一块拼图,现在已经找了 2 天了。
这是一个简化的repo 以获得更好的图片,也许可以在本地播放。
一个测试,看看增量是否适用于本地数据值工作正常:here,所以这真的是道具和发射的场景让我现在很沮丧。任何帮助都物超所值!
【问题讨论】:
标签: unit-testing vue.js jestjs vuetify.js vue-test-utils