Мок route в Vitest
Использую Vue, vitest. Необходимо замокать route для каждого теста отдельно, чтобы не перезатирался.
const isRouteChat = computed(() => route?.path == '/chat');
vi.mock('vue-router');
describe('LayoutHeader.vue', () => {
let wrapper;
let vm;
beforeEach(() => {
const pinia = createTestingPinia({
createSpy: vi.fn,
});
wrapper = shallowMount(ChatPage, {
global: {
plugins: [pinia],
},
});
vm = wrapper.vm;
});
afterEach(() => {
wrapper.unmount();
vi.resetAllMocks();
});
it('isRouteChat', () => {
useRoute.mockReturnValue({ path: '/chat' });
expect(vm.isRouteChat).toBeTruthy();
});
})
В данном случае, я мокаю route и тест проходит. Но если я добавлю ещё один тест, но с другим моком:
it('isRouteChat', () => {
useRoute.mockReturnValue({ path: '/another' });
expect(vm.isRouteChat).toBeTruthy();
});
Тут route будет undefined, и мокирование не изолируется между тестами. Необходимо, чтобы каждый тест мог независимо задать свой мок route, без влияния на другие.