JUnit의 생명 주기
UserControllerTest
@ExtendWith(MockitoExtension.class)
class UserControllerTest {
@Mock
private UserService userService;
@InjectMocks
private UserController userController;
private MockMvc mockMvc;
@BeforeEach
public void init() {
mockMvc = MockMvcBuilders.standaloneSetup(userController).build();
}
@Test
@DisplayName("회원가입 (성공)")
void signup() throws Exception {
// given
SignupRequest request = SignupRequest.builder()
.admin(false)
.username("nathan")
.password("1234qwer")
.email("nathan@gmail.com")
.build();
ResponseStatusDto response = new ResponseStatusDto(StatusEnum.SIGN_SUCCESS);
when(userService.signup(any(SignupRequest.class)))
.thenReturn(response);
// when
ResultActions resultActions = mockMvc.perform(
MockMvcRequestBuilders.post("/api/users/signup")
.contentType(MediaType.APPLICATION_JSON)
.content(new Gson().toJson(request)));
// then
resultActions.andExpect(status().isOk())
.andExpect(jsonPath("statusCode", response.getStatusCode()).exists())
.andExpect(jsonPath("msg", response.getMsg()).exists());
}
@Test
@DisplayName("회원가입 (실패) - 아이디")
void signup_failed_id() throws Exception {
// given
SignupRequest request = SignupRequest.builder()
.admin(false)
.username("nat")
.password("1234qwer")
.email("nathan@gmail.com")
.build();
// when
ResultActions resultActions = mockMvc.perform(
MockMvcRequestBuilders.post("/api/users/signup")
.contentType(MediaType.APPLICATION_JSON)
.content(new Gson().toJson(request))
);
// then
resultActions.andExpect(status().isBadRequest());
}
@Test
@DisplayName("회원가입 (실패) - 비밀번호")
void signup_failed_pw() throws Exception {
// given
SignupRequest request = SignupRequest.builder()
.admin(false)
.username("nathan")
.password("1234qwe")
.email("nathan@gmail.com")
.build();
// when
ResultActions resultActions = mockMvc.perform(
MockMvcRequestBuilders.post("/api/users/signup")
.contentType(MediaType.APPLICATION_JSON)
.content(new Gson().toJson(request))
);
// then
resultActions.andExpect(status().isBadRequest());
}
@Test
void login() {
}
}
@DataJpaTest
class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
@Test
@DisplayName("사용자 추가")
void addUser() {
// given
User user = new User(
"nathan",
"1234qwer",
"nathan@gmail.com",
UserRoleEnum.USER
);
// when
User savedUser = userRepository.save(user);
// then
assertThat(savedUser.getUsername()).isEqualTo(user.getUsername());
}
@DisplayName("사용자 조회")
@Test
void findByUsername() {
// given
User user = new User(
"nathan",
"1234qwer",
"nathan@gmail.com",
UserRoleEnum.USER
);
userRepository.save(user);
// when
Optional<User> savedUser = userRepository.findByUsername(user.getUsername());
// then
assertThat(savedUser).isPresent();
}
}