랜덤성을 갖고 있는 로직을 테스트 하는 방법

랜덤성을 갖고 있는 로직을 테스트 하는 방법

1. 랜덤성을 바깥 쪽으로 추출한다. #

랜덤성은 테스트하기 어렵다. 이 랜덤성이 도메인 깊은 곳(예를 들어, Layerd Architecture 에서 domain 쪽)에 위치하면 해당 도메인을 의존하고 있는 다른 도메인들도 테스트하기 어려워진다.

즉, 랜덤성이 전파되어 테스트하기 어려운 클래스가 많아지니까 (이 랜덤성을)가장 바깥 쪽으로 옮겨 테스트하기 어려운 클래스를 줄이자는 것이다.

2. (가능한 구조라면) 랜덤과 관련된 값을 인자로 넘겨 받을 수 있는지 확인해본다. #

랜덤성을 선택적으로 변경할 수 있는지 확인해본다. (예를 들어, 랜덤과 관련된 값을 인자로 넘겨 받는 것이다.)

고차 함수를 이용하면 해결할 수 있는 것들이 많겠다.

3. 별도의 클래스로 추출한다. #

랜덤성을 처리하는 부분을 별도의 클래스로 추출한다. ‘private 메서드를 테스트 하는 방법’과 비슷한 맥락이 되겠다.