더북(TheBook)

코드가 꽤 길지만, 콜백 패턴 응용 코드의 테스트 목적을 이해했다면 그리 복잡할 것도 없다. 콜백 기능에 초점을 둔 이 테스트는 다음 두 가지를 확인한다.

콜백 실행 횟수가 정확하다.

콜백이 실행될 때마다 알맞은 인자가 전달된다.

테스트 목적을 달성하려면 매번 함수를 실행할 때마다 수신한 인자 등을 기록할 일종의 콜백 함수가 필요하다. 2장에서 배운 재스민 스파이가 바로 이런 일(사실 더 많은 일을 할 수 있다)에 제격이다.

예제 5-2에서 iterate 함수의 테스트는 재스민 스파이 인스턴스 callbackSpy를 이용하는데, callbackSpy는 각 테스트 실행 전 beforeEach 블록에서 callbackSpy = jasmine.createSpy();로 초기화된다.

Note.

createSpy로 만든 스파이는 말 그대로 빈 껍데기 스파이(bare spy)다. spyOn(someObject, ‘someFunction’)처럼 만든 스파이와 달리 빈 껍데기 스파이는 이미 존재하는 객체나 감시할 대상 함수가 필요 없다.

따라서 호출 추적 정도의 ‘감시 행위’ 이상의 활동은 기대하기 어렵다. 즉, 빈 껍데기 스파이는 감시할 함수(이런 함수 자체가 없다)를 호출한 후 구현부로 흘러들어 가게 하거나 다른 함수를 함께 호출하는 기능 따위는 없다.

이러한 한계는 있지만, 콜백 함수가 제대로 실행되었는지 확인하는 용도로는 딱이다.

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