createReservation 함수의 인자가 늘었으니 기존 두 테스트 역시 수정할 수밖에 없다. 하지만 saveReservation 함수 구현부를 직접 실행할 테스트는 없을 테니 ReservationSaver 생성 코드와 스파이 관련 코드를 전체 꾸러미의 beforeEach 함수로 옮겨 리팩토링한다(예제 2-7).
예제 2-7 ReservationSaver를 포함한 테스트
소스 파일 2장\Test Frameworks\TestFrameworks_04_tests.js
describe(‘createReservation’, function() { var testPassenger = null, testFlight = null, testReservation = null, testSaver = null; beforeEach(function() { testPassenger = { firstName: ‘윤지’, lastName: ‘김’ }; testFlight = { number: ‘3443’, carrier: ‘대한항공’, destination: ‘울산’ }; testSaver = new ReservationSaver(); spyOn(testSaver, ‘saveReservation’); testReservation = createReservation(testPassenger, testFlight, testSaver); }); it(‘passenger를 passengerInformantion 프로퍼티에 할당한다’, function() { expect(testReservation.passengerInformation).toBe(testPassenger); }); it(‘주어진 flight를 flightInformation 프로퍼티에 할당한다’, function() { expect(testReservation.flightInformation).toBe(testFlight); }); it(‘예약 정보를 저장한다’, function() { expect(testSaver.saveReservation).toHaveBeenCalled(); }); });