|
|
@@ -161,20 +161,21 @@ vi.mock('../../src/api/disabilityClient', () => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ const mockDisabilityClientManager = {
|
|
|
+ get: vi.fn(() => mockDisabilityClient),
|
|
|
+ init: vi.fn(() => mockDisabilityClient),
|
|
|
+ reset: vi.fn(),
|
|
|
+ };
|
|
|
+
|
|
|
return {
|
|
|
- disabilityClientManager: {
|
|
|
- getInstance: vi.fn(() => ({
|
|
|
- get: vi.fn(() => mockDisabilityClient),
|
|
|
- init: vi.fn(() => mockDisabilityClient),
|
|
|
- reset: vi.fn(),
|
|
|
- })),
|
|
|
- },
|
|
|
+ disabilityClientManager: mockDisabilityClientManager,
|
|
|
+ disabilityClient: mockDisabilityClient,
|
|
|
};
|
|
|
});
|
|
|
|
|
|
// Mock AreaSelect组件
|
|
|
vi.mock('@d8d/area-management-ui', () => ({
|
|
|
- AreaSelect: ({ onChange, value, disabled, required, className, 'data-testid': testId }: any) => (
|
|
|
+ AreaSelect: ({ onChange, value, disabled, 'data-testid': testId }: any) => (
|
|
|
<div data-testid={testId || 'area-select'}>
|
|
|
<select
|
|
|
data-testid="area-province-select"
|
|
|
@@ -295,9 +296,10 @@ describe('残疾人管理集成测试', () => {
|
|
|
const createButton = screen.getByTestId('create-button');
|
|
|
fireEvent.click(createButton);
|
|
|
|
|
|
- // 验证模态框打开
|
|
|
+ // 验证模态框打开 - 检查对话框标题
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('新增残疾人')).toBeInTheDocument();
|
|
|
+ const elements = screen.getAllByText('新增残疾人');
|
|
|
+ expect(elements.length).toBeGreaterThan(1); // 按钮和对话框标题
|
|
|
});
|
|
|
|
|
|
// 填写表单
|
|
|
@@ -370,7 +372,8 @@ describe('残疾人管理集成测试', () => {
|
|
|
|
|
|
// 验证删除确认对话框打开
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('确认删除')).toBeInTheDocument();
|
|
|
+ const elements = screen.getAllByText('确认删除');
|
|
|
+ expect(elements.length).toBeGreaterThan(1); // 对话框标题和按钮
|
|
|
});
|
|
|
|
|
|
// 点击确认删除按钮
|
|
|
@@ -395,9 +398,10 @@ describe('残疾人管理集成测试', () => {
|
|
|
const createButton = screen.getByTestId('create-button');
|
|
|
fireEvent.click(createButton);
|
|
|
|
|
|
- // 验证模态框打开
|
|
|
+ // 验证模态框打开 - 检查对话框标题
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('新增残疾人')).toBeInTheDocument();
|
|
|
+ const elements = screen.getAllByText('新增残疾人');
|
|
|
+ expect(elements.length).toBeGreaterThan(1); // 按钮和对话框标题
|
|
|
});
|
|
|
|
|
|
// 尝试提交空表单
|
|
|
@@ -413,9 +417,9 @@ describe('残疾人管理集成测试', () => {
|
|
|
});
|
|
|
|
|
|
it('应该处理API错误', async () => {
|
|
|
- // Mock API错误
|
|
|
- const mockClient = require('../../src/api/disabilityClient').disabilityClientManager.getInstance().get();
|
|
|
- mockClient.createDisabledPerson.$post.mockRejectedValueOnce(new Error('创建失败'));
|
|
|
+ // Mock API错误 - 使用mockImplementationOnce
|
|
|
+ const mockCreate = disabilityClientManager.get().createDisabledPerson.$post as any;
|
|
|
+ mockCreate.mockImplementationOnce(() => Promise.reject(new Error('创建失败')));
|
|
|
|
|
|
renderComponent();
|
|
|
|
|
|
@@ -428,9 +432,10 @@ describe('残疾人管理集成测试', () => {
|
|
|
const createButton = screen.getByTestId('create-button');
|
|
|
fireEvent.click(createButton);
|
|
|
|
|
|
- // 填写有效表单
|
|
|
+ // 等待模态框打开 - 检查对话框标题
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('新增残疾人')).toBeInTheDocument();
|
|
|
+ const dialogTitles = screen.getAllByText('新增残疾人');
|
|
|
+ expect(dialogTitles.length).toBeGreaterThan(1); // 按钮和对话框标题
|
|
|
});
|
|
|
|
|
|
fireEvent.change(screen.getByTestId('name-input'), { target: { value: '测试用户' } });
|
|
|
@@ -448,7 +453,8 @@ describe('残疾人管理集成测试', () => {
|
|
|
|
|
|
// 验证错误处理(toast错误消息由sonner处理,这里我们验证表单没有关闭)
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('新增残疾人')).toBeInTheDocument();
|
|
|
+ const elements = screen.getAllByText('新增残疾人');
|
|
|
+ expect(elements.length).toBeGreaterThan(1); // 按钮和对话框标题
|
|
|
});
|
|
|
});
|
|
|
});
|