더북(TheBook)

예제 6-5 HTTP 없는 checkInRecorder.recordCheckIn의 단위 테스트

소스 파일 6장\Promises\checkInRecorder_01_tests.js

describe(‘Conference.checkInRecorder’, function() {
‘use strict’;
 
var attendee, checkInRecorder;
 
beforeEach(function() {
  attendee = Conference.attendee(‘Tom’,‘Jones’);
  checkInRecorder = Conference.checkInRecorder();
});
 
describe(‘recordCheckIn(attendee)’, function() {
 
  it(‘참가자가 체크인되면 checkInNumber로 귀결된 프라미스를 반환한다’, function(done) {
    attendee.checkIn();
    checkInRecorder.recordCheckIn(attendee).then(
      function promiseResolved(actualCheckInNumber) {
        expect(typeof actualCheckInNumber).toBe(‘number’);
        done();
      },
      function promiseRejected() {
        expect(‘프라미스는 버려졌다’).toBe(false);
        done();
      });
  });
 
  it(‘참가자가 체크인되지 않으면 에러와 버림 프라미스를 반환한다’, function(done) {
    checkInRecorder.recordCheckIn(attendee).then(
      function promiseResolved() {
        expect(‘프라미스는 귀결됐다’).toBe(false);
        done();
      },
      function promiseRejected(reason) {
        expect(reason instanceof Error).toBe(true);
        expect(reason.message)
          .toBe(checkInRecorder.getMessages().mustBeCheckedIn)
        done();
      });
  });
});
});

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