더북(TheBook)

이 방식이 함수형 접근 방법과 비슷해 보여도, 실전에서는 객체의 상태를 설정해두고 어떤 동작을 촉발시키는 방식에 의지하는 경향이 있다. 이는 Given, When, Then 사이의 관계가, 의도적으로, 아주 약하기 때문이다. 객체들의 동작이 어떤 조건에 의해 촉발되는 것을 테스트하고 싶은 객체 지향 모델이라면 이런 테스트 방식이 절대적으로 옳은 방식이다.

반면 순수 함수를 테스트할 때는 단지 함수에 의해 어떤 속성이 보존되고 어떤 속성이 변경되는지에 대해서만 생각하면 된다.

우리가 만들 이상적인 테스트는 A 타입의 입력을 다른 B 타입의 출력으로 변환하는 함수나 함수들의 연쇄 호출에 초점을 맞추고, 이를 통해 함수나 함수의 연쇄가 예상대로 작동하는지를 검사할 수 있어야 한다. 다른 말로 여러 다른 A로부터 올바른 B가 만들어지는지를 검사해야 한다.

이를 테스트하는 방법은 두 가지다. 첫 번째는 A의 인스턴스와 그에 대해 예상되는 B의 집합을 연관시킨 일련의 예제를 제공하는 방법이다. 그 후 각각의 A에 대해 함수(또는 함수의 연쇄)를 실행하고 그 결과가 예상되는 결과에 있는 B와 같은지를 살펴본다. 이런 접근 방법을 예제에 의한 테스트(test by example)이라고 부르며, 가능한 값의 조합이 한정적이거나, 프로덕션 시스템에서 얻은 구체적인 몇몇 데이터를 재현하고 싶을 때 유용하다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.