- 서비스 단
@Service
public class UserService {
UserMapper userMapper;
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
public Optional<User> getUser(String id){
return userMapper.getUser(id);
}
public List<User> getUserList(){
return userMapper.getUserList();
}
public Optional<User> createUser(User user){
return userMapper.createUser(user);
}
public Optional<User> updateUser(User user){
return userMapper.updateUser(user);
}
public int deleteUser(String id){
return userMapper.deleteUser(id);
}
}
- 테스트 코드
package com.example.blossom.service;
import com.example.blossom.model.User;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Commit;
import java.util.List;
import java.util.Optional;
import static org.assertj.core.api.Assertions.*;
@SpringBootTest
class UserServiceTest {
@Autowired
UserService userService;
@BeforeEach
public void setUp(){
}
@Test
@DisplayName("전체 조회")
void test1(){
List<User> userList = userService.getUserList();
for (User user : userList) {
System.out.println("user = " + user.toString());
}
}
@Test
@DisplayName("유저 단건 조회")
void test2(){
// User user = userService.getUser("tony");
Optional<User> user = userService.getUser("tony");
System.out.println("user = " + user.toString());
}
@Test
@Commit
@DisplayName("유저 생성")
void test3(){
Optional<User> user = Optional.ofNullable(User.builder()
.id("Tester4321")
.email("tester@gmail.com")
.name("TB")
.password("test123445")
.build());
valid_Id(user);
// IllegalStateException e = assertThrows(IllegalStateException.class, ()-> userService.createUser(user));
// assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다");
System.out.println("user = " + user.get().getId());
}
public void valid_Id(Optional<User> user) {
// ifPresent : 널이 아닐경우
userService.getUser(user.get().getId()).ifPresent(m ->{
throw new IllegalStateException("이미 존재하는 회원 입니다");
});
}
@Test
@Commit
@DisplayName("삭제")
void 유저_삭제(){
int deleteCnt = userService.deleteUser("Tester");
assertThat(deleteCnt).isEqualTo(1);
System.out.println("삭제 건 : " + deleteCnt);
}
}
- Optinal을 이용해 결과 널 값 예외 방지를 할 수 있다.
- isPresent() 메소드
Boolean 타입
Optional 객체가 값을 가지고 있다면 true, 값이 없다면 false 리턴
- ifPresent() 메소드
Void 타입
ifPresent()는 Optional 객체가 값을 가지고 있으면 실행 값이 없으면 넘어감
- 가입 시 유저 조회 테스트 결과
잘 찍혔다
'TIL' 카테고리의 다른 글
메모 (0) | 2023.03.30 |
---|---|
빌더 패턴 , @Builder (0) | 2023.03.30 |
Lombok (0) | 2023.03.24 |
ThymeLeaf (0) | 2023.03.24 |