用户头像

Change-Id: I562c0cb7212c1ac9c7ad1dad96b136fc8c23269c
diff --git a/src/test/java/com/example/myproject/controller/UserControllerTest.java b/src/test/java/com/example/myproject/controller/UserControllerTest.java
index a97e169..9fd65d9 100644
--- a/src/test/java/com/example/myproject/controller/UserControllerTest.java
+++ b/src/test/java/com/example/myproject/controller/UserControllerTest.java
@@ -8,6 +8,7 @@
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.springframework.mock.web.MockMultipartFile;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -186,14 +187,13 @@
     void testEditProfile() {
         Long userId = 1L;
         Map<String, Object> profileData = new HashMap<>();
-        profileData.put("avatarUrl", "https://example.com/avatar.jpg");
         profileData.put("nickname", "newNickname");
         profileData.put("gender", "Male");
         profileData.put("description", "Updated description");
         profileData.put("hobbies", "Reading, Hiking");
 
         // 模拟服务层的返回
-        when(userService.editProfile(userId, "https://example.com/avatar.jpg", "newNickname", "Male", "Updated description", "Reading, Hiking"))
+        when(userService.editProfile(userId, "newNickname", "Male", "Updated description", "Reading, Hiking"))
                 .thenReturn(true);
 
         // 调用控制器方法
@@ -203,7 +203,7 @@
         assertEquals("用户资料更新成功", resultMap.get("message"));
 
         // 验证服务层方法是否被调用
-        verify(userService, times(1)).editProfile(userId, "https://example.com/avatar.jpg", "newNickname", "Male", "Updated description", "Reading, Hiking");
+        verify(userService, times(1)).editProfile(userId,  "newNickname", "Male", "Updated description", "Reading, Hiking");
     }
 
     @Test
@@ -231,4 +231,37 @@
         assertEquals(expectedResponse, result);
         verify(userService, times(1)).calculateShareRate(userId);  // 验证服务方法是否被调用
     }
+
+    @Test
+    void testUploadUserAvatar() throws Exception {
+        Long userId = 1L;
+
+        // 构造 Mock 文件
+        MockMultipartFile mockFile = new MockMultipartFile(
+                "file",
+                "avatar.jpg",
+                "image/jpeg",
+                "fake image content".getBytes()
+        );
+
+        // 构造返回值
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "头像上传成功");
+        mockResponse.put("userId", userId);
+        mockResponse.put("avatarUrl", "/uploads/avatarUrl/1.jpg");
+
+        when(userService.uploadUserAvatar(userId, mockFile)).thenReturn(mockResponse);
+
+        Map<String, Object> resultMap = userController.uploadAvatar(userId, mockFile);
+        assertEquals("success", resultMap.get("status"));
+        assertEquals("头像上传成功", resultMap.get("message"));
+        assertEquals(userId, resultMap.get("userId"));
+        assertEquals("/uploads/avatarUrl/1.jpg", resultMap.get("avatarUrl"));
+
+        // 验证 service 被调用一次
+        verify(userService, times(1)).uploadUserAvatar(userId, mockFile);
+    }
+
+
 }