반응형
회원 정보를 간단하게 저장하고 조회를 할 수 있는 기능을 구현해 본다.
@Data
public class Member {
private Long id;
private String username;
private int age;
}
회원 관련 데이터를 만들어 주었고 lombok 라이브러리를 통해 @Data 어노테이션을 사용해서 Getter와 Setter를 자동 생성하게 해 주었다. 강의에서는 @Getter @Setter를 사용했는데 스터디에서 배운 @Data 어노테이션을 활용해 보았다.
public class MemberRepository {
private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L;
private static final MemberRepository instance = new MemberRepository();
public static MemberRepository getInstance() {
return instance;
}
}
회원 저장소는 싱글톤 패턴이 적용되어 있다. 싱글톤 패턴은 객체를 단 하나만 생성해서 공유해야 하므로 생성자를 private 접근자로 막아둔다.
public Member save(Member member) {
member.setId(++sequence);
store.put(member.getId(), member);
return member;
}
member 저장마다 sequence 값이 증가하도록 설정하고 Id를 기준으로 member를 꺼낼 수 있도록 코딩한다.
@AfterEach
void afterEach() {
memberRepository.clearStore();
}
테스트 코드를 작성할 때 @AfterEach를 통해 각 @Test 메소드가 실행 될 떄 전에 사용한 리소스를 처리하는데 사용했다. 이렇게 되면 다음 테스트에 영향을 주지 않고 계속 테스트를 진행할 수 있게 된다.
@Test
void findAll() {
//given
Member member1 = new Member("member1", 20);
Member member2 = new Member("member2", 30);
memberRepository.save(member1);
memberRepository.save(member2);
//when
List<Member> result = memberRepository.findAll();
//then
assertThat(result.size()).isEqualTo(2);
assertThat(result).contains(member1, member2);
}
조회 테스트를 보면 Member에 키,벨류 값을 넣어주고 저장해 주었다. 그리고 조회 기능을 코딩해주고 사이즈를 체크하여 같은지 확인했고 contains를 통해 result안에 member1과 member2 객체가 있는지도 체크했다.
given은 ~게 주어졌을 때, when은 ~게 실행 되었을 때, then은 결과가 이래야 한다. 이렇게 쓰인다고 한다.
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : JSP로 회원 관리 구현하기 (0) | 2022.01.21 |
---|---|
[Spring Boot] : Servlet을 통한 회원 관리 웹 애플리케이션 구현 (0) | 2022.01.21 |
[Spring Boot] : HTTP 응답을 JSON으로 반환하기 (0) | 2022.01.20 |
[Spring Boot] : HTTP 단순 텍스트 응답과 HTML 응답 (0) | 2022.01.20 |
[Spring Boot] : HttpServletResponse 기본 사용법과 응답 코드 (0) | 2022.01.20 |
댓글