【发布时间】:2024-04-11 01:50:01
【问题描述】:
我在我的应用程序中使用 Vue 3 和 Vue-Router,但在使用 Jest 在使用 useRoute() 的组件上创建单元测试时遇到了问题,例如:
<template>
<div :class="{ 'grey-background': !isHomeView }" />
</template>
<script lang="ts">
import { defineComponent, computed } from 'vue';
import { useRoute } from 'vue-router';
export default defineComponent({
setup: () => {
const isHomeView = computed(() => {
return useRoute().name === 'Home';
});
return {
isHomeView,
};
},
});
</script>
computed 属性正在使用useRoute(),并且在模板中使用。
当我对此组件进行 Jest 测试时,会抛出一个错误,提示 TypeError: Cannot read property 'name' of undefined。
我试着像这样嘲笑useRoute:
jest.mock('vue-router', () => ({ useRoute: jest.fn() })); 然后上beforeEach:useRoute.mockReturnValueOnce({ name: 'Home' });,但它不起作用。
我不是在谈论路由器工作方式不同的 Vue 2,而是 Vue 3。
【问题讨论】:
标签: typescript vue.js jestjs vue-router vuejs3