diff --git a/test/login.test.tsx b/test/login.test.tsx
index 936d9fb..b342387 100644
--- a/test/login.test.tsx
+++ b/test/login.test.tsx
@@ -33,8 +33,9 @@
 describe('Login Component', () => {
     const mockDispatch = jest.fn();
     const mockNavigate = jest.fn();
-    const mockRefresh = jest.fn();
-  
+    const mockPostRefresh = jest.fn();
+    const mockGetRefresh = jest.fn();
+
     beforeEach(() => {
       // 初始化模拟函数返回值
       mockUseAppDispatch.mockReturnValue(mockDispatch);
@@ -42,12 +43,28 @@
       mockUseSelector.mockImplementation((selector) => selector({ user: { userName: '' } }));
       
       // 默认模拟 useApi 返回正常状态
-      mockUseApi.mockReturnValue({
+      mockUseApi
+      .mockReturnValueOnce({
         data: { token: 'mock-token' },
         loading: false,
         error: null,
-        refresh: mockRefresh,
-      });
+        refresh: mockPostRefresh,
+      })
+      .mockReturnValueOnce({
+        data:{
+            'userId' : '001',
+            'userName' : 'san3yuan',
+            'role' : 'manager',
+            'uploadTraffic' : 0,
+            'downloadTraffic': 0,
+            'downloadPoints' : 0,
+            'avatar' : 'https://www.w3school.com.cn/i/photo/tulip.jpg',
+        },
+        loading: false,
+        error: null,
+        refresh: mockGetRefresh,
+      })
+      ;
     });
   
     afterEach(() => {
@@ -67,26 +84,47 @@
     // 测试 2: 登录成功流程
     it('点击登录按钮触发API请求、Redux更新和导航', async () => {
       // 模拟 API 返回有效数据
-      mockRefresh.mockResolvedValue({ token: 'mock-token' }); // 关键：必须返回 Promise
-      mockUseApi.mockReturnValue({
-        data: { token: 'mock-token' },
-        loading: false,
-        error: null,
-        refresh: mockRefresh,
-      });
+      mockPostRefresh.mockResolvedValue({ token: 'mock-token' });
+      mockGetRefresh.mockResolvedValue({
+        'userId' : '001',
+        'userName' : 'san3yuan',
+        'role' : 'manager',
+        'uploadTraffic' : 0,
+        'downloadTraffic': 0,
+        'downloadPoints' : 0,
+        'avatar' : 'https://www.w3school.com.cn/i/photo/tulip.jpg',
+    });
     
       render(<Login />);
-      
+      jest.useFakeTimers();
       fireEvent.click(screen.getByText('登录'));
-    
+      jest.runAllTimers();
       await waitFor(() => {
         // 验证 dispatch 调用
-        expect(mockDispatch).toHaveBeenCalledWith({
+        expect(mockPostRefresh).toHaveBeenCalled();
+      
+        // 验证Redux更新
+        expect(mockDispatch).toHaveBeenNthCalledWith(1, {
           type: 'user/login',
-          payload: { token: 'mock-token' },
+          payload: { token: 'mock-token' }
+        });
+
+        // 验证第二次API调用（用户信息）
+        expect(mockGetRefresh).toHaveBeenCalled();
+
+        // 验证用户信息更新
+        expect(mockDispatch).toHaveBeenNthCalledWith(2, {
+          type: 'user/getUserInfo',
+          payload: {
+            'userId' : '001',
+            'userName' : 'san3yuan',
+            'role' : 'manager',
+            'uploadTraffic' : 0,
+            'downloadTraffic': 0,
+            'downloadPoints' : 0,
+            'avatar' : 'https://www.w3school.com.cn/i/photo/tulip.jpg',
+        }
         });
       });
-    });
-  
-  
+    });  
   });
\ No newline at end of file
