오늘은 우선 Controller단의 테스트코드에 도전해보았다.
Membes Controller 테스트코드
public class MembersPostControllerTest {
@Mock
private MembersPostService membersPostService;
@Mock
private SignupRequestDto signupRequestDto;
@Mock
private LoginRequestDto loginRequestDto;
@Mock
private GithubIdRequestDto githubIdRequestDto;
@Mock
private UserDetailsImpl userDetails;
@Mock
private HttpServletRequest httpServletRequest;
@Mock
private HttpServletResponse httpServletResponse;
private MembersPostController membersPostController;
Members member = Members.builder()
.email("test@example.com")
.nickname("nickname")
.password("password1!")
.role(Role.USER)
.codingTem(36.5)
.mogakkoTotalTime(0L)
.memberStatusCode(MemberStatusCode.BASIC)
.profileImage("https://source.boringavatars.com/beam/120/$" + "nickname" + "?colors=00F0FF,172435,394254,EAEBED,F9F9FA")
.friendCode(123456)
.isTutorialCheck(false)
.build();
@BeforeEach
public void setup() {
MockitoAnnotations.openMocks(this);
membersPostController = new MembersPostController(membersPostService);
}
먼저 전역으로 필요한 member 변수를 하나 선언해주었고 @BeforeEach 어노테이션을 사용해 Mock객체들을 초기화해준다. 그리고 Members Controller 의 인스턴스를 생성해주었다. 여기에서는 @ExtendWith(MockitoExtension.class) 를 써주지 않아야 하는것인지.. 이 어노테이션을 붙여주면 테스트코드가 작동하지 않아서 일단 빼주었다.
그리고 이 어노테이션의 역할이 무엇인지 Gpt에게 물어봤다..!!
라고 한다!
그리고 보통 Controller 테스트코드는 WebMvcTest 어노테이션을 달고 시작하던데, 아직 여기까지는 이해가 안되고..
@DisplayName("[POST] 회원가입 테스트")
@Test
public void testSignup() {
Message message = new Message("회원가입 성공", null);
when(membersPostService.signup(any(SignupRequestDto.class))).thenReturn(ResponseEntity.ok(message));
ResponseEntity<Message> response = membersPostController.signup(signupRequestDto);
assertEquals(HttpStatus.OK, response.getStatusCode());
assertEquals(message, response.getBody());
}
결국은 이렇게 작성해보았다.
when()에는 내가 원하는 상황, thenReturn()으로 원하는 반환값을 설정해줌. 그리고 필요한 메서드를 호출하여 그 두가지 값을 Assertions 를 사용해 검증하면 됨!!
맞는.. 거겠..지?
맞.. 겠지..? ㅎㅎ
'T.I.L. :: Today I Learned > 항해99 14기 본과정' 카테고리의 다른 글
Day 87. 코드 커버리지 70%가 눈 앞! (0) | 2023.06.28 |
---|---|
Day 86. 테스트코드 쓰는 거 재밌당 ㅎㅋㅎㅋㅎ (0) | 2023.06.27 |
Day 84. 무한 리팩토링 + 테스트 코드 (0) | 2023.06.25 |
Day 83. 마지막 프로젝트도 마무리가 되어간다! (0) | 2023.06.24 |
Day 82. 테스트 코드.......................................... (0) | 2023.06.23 |