Skip to content

Commit ff799e9

Browse files
authored
[Refactor] AWS S3 업로드 코드 테스트 시 Mocking (#290)
* refactor: AWS S3 업로드 부분 Mocking * refactor: 사용하지 않는 변수 제거 * refactor: protected 접근제한자 제거
1 parent 2386278 commit ff799e9

1 file changed

Lines changed: 22 additions & 8 deletions

File tree

src/test/java/org/programmers/signalbuddyfinal/domain/postit/service/PostItServiceTest.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package org.programmers.signalbuddyfinal.domain.postit.service;
22

33

4-
import static org.assertj.core.api.Assertions.*;
5-
import static org.junit.jupiter.api.Assertions.*;
6-
4+
import static org.assertj.core.api.Assertions.assertThat;
5+
import static org.junit.jupiter.api.Assertions.assertThrows;
6+
import static org.mockito.ArgumentMatchers.any;
7+
import static org.mockito.ArgumentMatchers.anyString;
8+
import static org.mockito.Mockito.mock;
9+
import static org.mockito.Mockito.when;
10+
11+
import java.net.URL;
712
import java.time.LocalDateTime;
813
import org.junit.jupiter.api.BeforeEach;
914
import org.junit.jupiter.api.DisplayName;
1015
import org.junit.jupiter.api.Test;
1116
import org.locationtech.jts.geom.Point;
12-
import org.programmers.signalbuddyfinal.global.util.PointUtils;
1317
import org.programmers.signalbuddyfinal.domain.member.entity.Member;
1418
import org.programmers.signalbuddyfinal.domain.member.entity.enums.MemberRole;
1519
import org.programmers.signalbuddyfinal.domain.member.entity.enums.MemberStatus;
@@ -24,9 +28,12 @@
2428
import org.programmers.signalbuddyfinal.global.dto.CustomUser2Member;
2529
import org.programmers.signalbuddyfinal.global.exception.BusinessException;
2630
import org.programmers.signalbuddyfinal.global.security.basic.CustomUserDetails;
31+
import org.programmers.signalbuddyfinal.global.service.AwsFileService;
2732
import org.programmers.signalbuddyfinal.global.support.IntegrationTest;
33+
import org.programmers.signalbuddyfinal.global.util.PointUtils;
2834
import org.springframework.beans.factory.annotation.Autowired;
2935
import org.springframework.mock.web.MockMultipartFile;
36+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
3037

3138
class PostItServiceTest extends IntegrationTest {
3239

@@ -38,19 +45,19 @@ class PostItServiceTest extends IntegrationTest {
3845
private MemberRepository memberRepository;
3946
@Autowired
4047
private PostitSolveRepository postitSolveRepository;
48+
@MockitoBean
49+
private AwsFileService awsFileService;
4150

4251
private Member member1;
43-
private Member member2;
4452
private CustomUser2Member user1;
4553
private CustomUser2Member user2;
4654
private CustomUser2Member notUser;
4755
MockMultipartFile mockImage1;
4856
MockMultipartFile mockImage2;
4957

5058
@BeforeEach
51-
protected void setUp() throws Exception {
59+
void setUp() {
5260
member1 = createMember("user1@gmail.com", "user1");
53-
member2 = createMember("user2@gmail.com", "user2");
5461

5562
mockImage1 = new MockMultipartFile(
5663
"image",
@@ -82,6 +89,10 @@ void createPostItSuccessTest() {
8289
PostItCreateRequest request = createPostItCreateRequest("제목", "내용",
8390
LocalDateTime.of(25, 1, 1, 0, 0));
8491

92+
when(awsFileService.uploadFileToS3(any(MockMultipartFile.class), anyString()))
93+
.thenReturn(mockImage2.getName());
94+
when(awsFileService.getFileFromS3(anyString(), anyString()))
95+
.thenReturn(mock(URL.class));
8596
PostItResponse response = postItService.createPostIt(request, mockImage1, user1);
8697

8798
assertThat(response.getContent()).isEqualTo(request.getContent());
@@ -108,6 +119,10 @@ void updatePostItTest() {
108119
"제목1", "img1", LocalDateTime.of(2025, 1, 1, 0, 0), member1));
109120
PostItRequest request = createPostItRequest("제목", "내용");
110121

122+
when(awsFileService.uploadFileToS3(any(MockMultipartFile.class), anyString()))
123+
.thenReturn(mockImage2.getName());
124+
when(awsFileService.getFileFromS3(anyString(), anyString()))
125+
.thenReturn(mock(URL.class));
111126
PostItResponse response = postItService.updatePostIt(1L, request, mockImage2, user1);
112127

113128
assertThat(response.getContent()).isEqualTo(request.getContent());
@@ -146,7 +161,6 @@ void otherUserDeletePostItTest() {
146161
postItRepository.save(
147162
createPostIt(Danger.NOTICE, PointUtils.toPoint(1.0203, 1.3048), "제목1",
148163
"제목1", "img1", LocalDateTime.of(2025, 1, 1, 0, 0), member1));
149-
PostItRequest request = createPostItRequest("제목", "내용");
150164

151165
assertThrows(BusinessException.class,
152166
() -> postItService.deletePostIt(1L, user2));

0 commit comments

Comments
 (0)