인프런 커뮤니티 질문&답변

y2gcoder님의 프로필 이미지

작성한 질문수

Practical Testing: 실용적인 테스트 가이드

테스트하기 어려운 영역을 분리하기

만료되었는지 확인하는 메서드 검증

해결된 질문

23.05.04 09:14 작성

·

857

·

수정됨

0

유익한 강의 만들어주셔서 감사합니다. 무분별하게 FakeRepository를 만들면서 실제 프로덕션 코드에서 작동하는것과 똑같이 내가 FakeRepository를 만들었을 거란 확신이 없이 테스트를 작성하던 와중에 이 강의를 보고 좀 깨우친 바가 많았습니다.

해당 강의를 듣다가 이 케이스에서는 어떻게 검증하기 쉽도록 개선해볼 수 있을까 해서 질문드립니다.

인증 코드라는 도메인 객체가 있습니다. 인증코드는 만료시간이라는 속성을 가지고 있고, isExpired()라는 메서드를 통해 해당 인증코드가 만료되었는지 확인할 수 있습니다.

public boolean isExpired() {
        return LocalDateTime.now().isAfter(expirationTime);
    }

강의를 듣기 전에는 이런 식으로 작성했습니다. 그런데 이런 식으로 작성하니 테스트 코드를 짜려고 하면 Fixture 설정 시 LocalDateTime.now()를 사용해서 만료일자를 설정해야 한다는 생각이 듭니다.

이런 경우에도 만료되었는지 검증할 수 있는 시간을 파라미터로 받도록 리팩토링해주는 것이 맞을지 궁금합니다!

답변 1

0

박우빈님의 프로필 이미지
박우빈
지식공유자

2023. 05. 05. 19:32

안녕하세요, y2gcoder님 :)

네 저라면 말씀하신대로 현재 일시를 파라미터로 받아서 코드를 작성할 것 같아요 ㅎㅎ
런타임 시점에 현재 시간을 생성해서 비교하는 것이 자연스러워보일 수 있지만, 테스트에 용이한 구조를 만들면서 '외부에서 특정 기준 시간이 주어졌을 때 인증 코드가 만료인가?'라는 의미를 담아 메서드를 제공해주면 좋지 않을까 싶어요.

도움이 되셨기를 바랍니다.

감사합니다 :)

y2gcoder님의 프로필 이미지
y2gcoder
질문자

2023. 05. 05. 21:49

답변 너무 감사합니다 :)

y2gcoder님의 프로필 이미지

작성한 질문수

질문하기