diff --git a/test/selfStatus.test.tsx b/test/selfStatus.test.tsx
new file mode 100644
index 0000000..4bd690e
--- /dev/null
+++ b/test/selfStatus.test.tsx
@@ -0,0 +1,77 @@
+import SelfStatus from '@/components/selfStatus/selfStatus';
+import { render, screen } from '@testing-library/react';
+import { useSelector } from 'react-redux';
+import React from 'react';
+import '@testing-library/jest-dom';
+import { useAppSelector } from '@/hooks/store';
+
+jest.mock('@/hooks/request', () => ({
+    useApi: jest.fn(),
+  }));
+  // 模拟所有外部依赖
+  jest.mock('@/hooks/store', () => ({
+    useAppDispatch: jest.fn(),
+    useAppSelector: jest.fn(),
+  }));
+  
+  jest.mock('react-router', () => ({
+    useNavigate: jest.fn(),
+  }));
+  
+  jest.mock('react-redux', () => ({
+    useSelector: jest.fn(),
+  }));
+
+
+describe('SelfStatus Component', () => {
+    it('renders correctly', () => {
+        (useAppSelector as jest.Mock).mockImplementation((selector) => selector({
+            user: {
+                userId: '001',
+                userName: 'san3yuan',
+                role: 'manager',
+                uploadTraffic: 0,
+                downloadTraffic: 0,
+                downloadPoints: 0,
+            },
+            setting: {
+                theme: 'light',
+            },
+        }));
+        
+        render(<SelfStatus />);
+        
+        expect(screen.getByText('san3yuan')).toBeInTheDocument();
+        expect(screen.getByText('用户组: manager')).toBeInTheDocument();
+        expect(screen.getByText('上传量: 0')).toBeInTheDocument();
+        expect(screen.getByText('下载量: 0')).toBeInTheDocument();
+        expect(screen.getByText('下载积分: 0')).toBeInTheDocument();
+    })
+    it('calculates and displays share ratio correctly', () => {
+        (useAppSelector as jest.Mock).mockImplementation((selector) => selector({
+            user: {
+                uploadTraffic: 100,
+                downloadTraffic: 50,
+            },
+        }));
+        render(<SelfStatus />);
+        expect(screen.getByText('分享率: 2.00')).toBeInTheDocument();
+    });
+    it('handles empty data gracefully', () => {
+        (useAppSelector as jest.Mock).mockImplementation((selector) => selector({
+            user: {
+                userName: '',
+                role: '',
+                uploadTraffic: null,
+                downloadTraffic: null,
+                downloadPoints: null,
+            },
+        }));
+        render(<SelfStatus />);
+        expect(screen.getByText('用户组: N/A')).toBeInTheDocument();
+        expect(screen.getByText('上传量: 0')).toBeInTheDocument();
+        expect(screen.getByText('下载量: 0')).toBeInTheDocument();        
+        expect(screen.getByText('分享率: N/A')).toBeInTheDocument();
+        expect(screen.getByText('下载积分: 0')).toBeInTheDocument();
+    });
+});
\ No newline at end of file
