1.5 단위 테스트를 함수형으로 만들기
앞에서 본 것처럼 가장 작고 일반적인 테스트는 단위 테스트다. 코드로 문제를 해결하기 전에 테스트를 작성하는 것은 항상 좋은 생각이다. 하지만 실제로 테스트를 작성한다는 것이 어떤 뜻일까? 그리고 함수형 프로그래밍으로 테스트를 작성하는 것이 전통적인 스타일로 코딩할 때 테스트를 작성하는 것과 어떻게 다를까?
단위 테스트를 작성할 때 가장 흔히 쓰이는 템플릿은 전제-상황-결과(given-when-then9)이다(준비-동작-단언(arrange-act-assert)이라고 부르기도 한다10). 이 방식은 각 테스트를 세 가지 단계로 나누는 방식으로 작동한다.
1. 어떤 조건이 주어지고(given)
2. 어떤 일이 벌어질 때(when)
3. 그렇다면(then) 특정 테스트 가능한 결과가 예상된다.
함수형 프로그래밍에도 이렇게 적용할 수 있다. ‘2와 3이 주어지고, 그 둘을 더한다면, 결과로 5를 얻는다.’