더북(TheBook)

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();
});
});

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