import { flushPromises, mount } from '@vue/test-utils'; import { describe, expect, it, vi } from 'vitest'; import PageData from './PageData.vue'; describe('page data recovery', () => { it('shows a retry action after a page request fails', async () => { const get = vi .fn() .mockRejectedValueOnce(new Error('network unavailable')) .mockResolvedValueOnce({ data: { records: [], totalRow: 0 } }); const wrapper = mount(PageData, { global: { directives: { loading: {} }, }, props: { pageUrl: '/page', requestClient: { get } }, }); await flushPromises(); expect(wrapper.text()).toContain('数据加载失败,请重试'); await wrapper.get('button').trigger('click'); await flushPromises(); expect(get).toHaveBeenCalledTimes(2); expect(wrapper.text()).not.toContain('数据加载失败,请重试'); }); });