添加了postsPanel作为通用帖子显示板,增加了对jest测试的配置,添加了论坛主页,设定了论坛全局框架,设定了论坛基础主题色及主题切换、字号切换逻辑
Change-Id: I9fad0cf577088adb00c9850d405ccd23e6072413
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