좌충우돌 개발공부

TIL(20240623) [아웃소싱 프로젝트: 단위테스트]


📌 Spring

💡 아웃소싱 프로젝트: 프로필 Service 단위테스트

이전에 구현했던 프로필 단위테스트 작성을 하려고 한다. 아직 테스트코드 작성에 서툴기 때문에 익숙해지기 위해서 계속해서 작성해보려고 노력해야할 것 같다.

@ExtendWith(MockitoExtension.class)
class UserServiceTest {
  @InjectMocks
  private UserService userService;

  @Mock
  private PasswordEncoder passwordEncoder;

  @Mock
  private UserRepository userRepository;

  @Mock
  private PasswordHistoryRepository passwordHistoryRepository;

  private User testUser;

  @BeforeAll
  public void setUpTestUser() {
    testUser = User.builder()
        .userId("test12345")
        .userName("테스트유저")
        .userPassword(passwordEncoder.encode("@test12345"))
        .userEmail("test@gmail.com")
        .description("한줄소개")
        .authority(UserRoleEnum.USER)
        .build();
    userRepository.save(testUser);
  }
}

먼저 setUpTestUser를 만들어주고

// 사용자 프로필 조회
    public UserResponseDto getUser(Long userSeq) {
        User user = findByUserSeq(userSeq);
        return new UserResponseDto(user);
    }

프로필 조회 service 단위테스틀 먼저 해보려고 한다.

@Test
  @DisplayName("프로필 조회")
  void getUser() {
    // given
    given(userRepository.findById(anyLong())).willReturn(Optional.of(testUser));

    // when
    UserResponseDto responseDto = userService.getUser(1L);

    //then
    assertEquals(testUser.getUserId(), responseDto.getUserId());
  }