Optinal 객체, assertThat()

Hyun·2023년 6월 28일
0

Spring

목록 보기
13/38
post-thumbnail

Optinal 객체

get()

optional 객체에서 값을 꺼낼 땐 get() 메서드를 사용할 수 있다.

ex)

@Test
public void save(){
	Member member = new Member();
    member.setName("spring");

    repository.save(member);
	
    //optional 객체에서 꺼낼때 get() 사용
    Member result = repository.findById(member.getId()).get();
	assertThat(member).isEqualTo(result);
}

ifPresent()

Optinal 객체의 값이 있다면(값이 null이 아니라면) 지정한 문장을 실행한다.

public Long join(Member member){
	//같은 이름이 있는 중복 회원X
	Optional<Member> result = memberRepository.findByName(member.getName());
	result.ifPresent(m -> {//ifPresent는 optional 의 메서드
		throw new IllegalStateException("이미 존재하는 회원입니다.");
		});

    memberRepository.save(member);
    return member.getId();
}

아래와 같이 간결하게 만들 수 있다.

public Long join(Member member){
	//같은 이름이 있는 중복 회원X
   	memberRepository.findByName(member.getName())
            .ifPresent(m -> {//ifPresent는 optional 의 메서드
            throw new IllegalStateException("이미 존재하는 회원입니다.");
            });

	memberRepository.save(member);
	return member.getId();
}

assertThat()

두 값이 동일한지 비교한다. 같으면 정상 동작하지만 다르면 에러를 발생시킨다.

ex)

@Test
public void save(){
	Member member = new Member();
    member.setName("spring");

    repository.save(member);

    Member result = repository.findById(member.getId()).get();
    //result가 member와 같은지 검사. 다르면 오류 발생시킴
	assertThat(member).isEqualTo(result);
}
profile
better than yesterday

0개의 댓글