Я использую 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.