29 lines
895 B
TypeScript
29 lines
895 B
TypeScript
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('数据加载失败,请重试');
|
|
});
|
|
});
|