Maison > Questions et réponses > le corps du texte
P粉2949544472023-08-26 00:01:26
Tout d'abord, j'espère qu'en Home.vue
中看到 router-link
或 router-view
:
<script setup lang="ts"> import { onMounted } from 'vue'; import { useRoute } from 'vue-router'; const route = useRoute(); onMounted(() => { console.log(route.query); }); </script> <template> <router-link to="home">Go to home</router-link> <router-view /> </template>
Par conséquent, Home.spec.ts
devrait ressembler à ceci :
import { expect, it, vi } from 'vitest'; import { mount } from '@vue/test-utils'; import * as VueRouter from 'vue-router'; import Home from '../src/components/Home.vue'; describe('./path/to/Home.vue', () => { const useRouteSpy = vi.spyOn(VueRouter, 'useRoute'); const getWrapper = () => mount(Home as any, { global: { stubs: { 'router-link': { template: '<div/>' }, 'router-view': { template: '<div/>' }, }, }, }); it('the component should be mounted', () => { // ARRANGE const useRouteMock = useRouteSpy.mockImplementationOnce({ query: 'query' }); // ACT const wrapper = getWrapper(); // ASSERT expect(useRouteMock).toHaveBeenCalled(); expect(wrapper.exists()).toBeTruthy(); }); });
Quelques commentaires/suggestions :
.spyOn()
和 .mockImplementation...()
pour la surveillance et la simulation.toHaveBeenCalled...()
pour vérifier si la simulation fonctionne comme prévumount()
函数中的存根应与模板中使用的组件相关(因此,如果您不使用
, il ne doit pas être répertorié comme talon)J'espère que cela vous aidera, acclamations!