더북(TheBook)

또한, 테스트마다 적당한 attendee 객체를 담아둘 컬렉션 객체 역시 beforeEach 블록에서 생성한다.

그런 다음 iterate 구현을 끝내고 collection.iterate(callbackSpy); 코드를 실행하면 컬렉션에 포함된 attendee마다 꼭 한 번씩 callbackSpy도 실행될 것이다.

도우미 함수 verifyCallbackWasExecutedForEachAttendee는 콜백 패턴 응용 코드에서 테스트할 항목을 실질적으로 확인한다.

callbackSpy는 실행될 때마다 자신의 calls 프로퍼티에 추가된 정보를 자동 수집한다. 그런 다음 스파이 호출 횟수(calls 프로퍼티의 원소 개수 카운트)와 컬렉션에 합류한 원소 개수를 비교한다.

expect(callbackSpy.calls.count()).toBe(attendeeArray.length);

 

컬렉션 attendee 객체 개수와 callbackSpy 호출 횟수가 같은지 알 수 있다.

verifyCallbackWasExecutedForEachAttendee 함수 뒷부분에서는 callbackSpy 호출 시 인자가 제대로 전달되는지, 즉 컬렉션에 있는 해당 attendee 객체를 넘기는지 확인한다.


var allCalls = callbackSpy.calls.all();
for (var i = 0; i < allCalls.length; i++) {
expect(allCalls[i].args[0]).toBe(attendeeArray[i]);
}

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