더북(TheBook)

예제 2-12 인자를 확인하는 테스트

소스 파일 2장\DI\DiContainer_01_tests.js

describe(‘DiContainer’, function() {
var container;
beforeEach(function() {
  container = new DiContainer();
});
describe(‘register(name,dependencies,func)’, function() {
  // 01
  it(‘인자가 하나라도 빠졌거나 타입이 잘못되면 예외를 던진다’, function() {
    var badArgs = [
      // 인자가 아예 없는 경우
      [],
      // name만 있는 경우
      [‘Name’],
      // name과 dependencies만 있는 경우
      [‘Name’,[‘Dependency1’,‘Dependency2’]],
      // dependencies가 빠진 경우
      // (상용 프레임워크는 지원하지만, DiContainer는 지원하지 않음)
      [‘Name’, function() {}],
      // 타입이 잘못된 다양한 사례들
      [1,[‘a’,‘b’], function() {}],
      [‘Name’,[1,2], function() {}],
      [‘Name’,[‘a’,‘b’], ‘should be a function’]
    ];
    badArgs.forEach(function(args) {
      expect(function() {
        container.register.apply(container,args);
      }).toThrow();
    });
  });
});
});

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