2013-06-13 2 views
2

Angular JS 프로젝트에 대한 첫 번째 단위 테스트를 작성 중이며 이해하기 쉽고 유지하기 쉬운 방법으로 배치하는 방법에 대해 궁금합니다.Angular JS에 대한 단위 테스트 파일 설정

예를 들어 지시문의 경우, 지금까지 발견 한 예제에는 일반적으로 지시문에 하나의 파일이 있고, 그 안에는 하나의 describe()가 있습니다. 내 견해로는 쉽게 유지할 수있는 큰 파일이 될 것입니다.

지시어 당 파일을 갖는 것이 더 당연하다고 생각합니다. 그리고 지시문에 지시문 자체에 대한 설명이 있습니다 (예 : myDate 지시문의 경우 파일 이름 "myDateDirectiveSpec.js"). 이제는 읽는 것이 더 쉬워졌지만 많은 기능을 가진 지시어에 대해서는 조금 걱정이됩니다. 아래 예제에서 나는 어떤 기능을 테스트했는지 표시하는 주석을 추가했지만 더 좋은 방법은 없다.

describe("myDate", function() { 
    var $compile, $rootScope; 
    var validDate, invalidDate, invalidDateFormat; 

    beforeEach(angular.mock.module('main')); 

    beforeEach(inject(
     ['$compile','$rootScope', function($c, $r) { 
      $compile = $c; 
      $rootScope = $r; 
     }] 
)); 

    // test function validDate 
    it("should check if the given date is a valid date", function() { 
     validDate = '31-8-2011'; 
     expect(isValidDate(validDate)).toBe(true); 
    }) 

    // test function formatDate 
    it("format the given date", function() { 
     validDate = '31-8-2011'; 
     expect(formatDate(validDate)).toBe('31/8/2011'); 
    }) 

    // test function anotherFunction 
    it("....", function() { 
     validDate = '31-8-2011'; 
     expect(anotherFunction(validDate)).toBe(true); 
    }) 

    // test function anotherFunction 
    it("....", function() { 
     validDate = '31-8-2011'; 
     expect(anotherFunction(validDate)).toBe(true); 
    }) 

    // test function anotherFunction 
    it("....", function() { 
     validDate = '31-8-2011'; 
     expect(anotherFunction(validDate)).toBe(true); 
    }) 


}); 

지시어 내가 위의 예에서 무엇을했는지 어떻게 든 다음 똑똑한 방법으로 그들을 분리해서 그것에 많은 기능이 있다면?

답변

0

본인이 아직 수행하지 않은 것처럼 지침을 테스트하는 데 적용 할 수 있는지 확실하지 않습니다. 하나; 서비스와 컨트롤러를 테스트 할 때 일반적으로 수행 할 작업은 설명 블록 중첩 작업을 시작하는 것입니다.

저는 재스민에 익숙하지 않습니다. 또는 잠재적 인 성능 문제가 발생할 수 있습니다. (체크 아웃 할 계획이 있습니다.)하지만 누군가 공유 할 것이 있다면 바랍니다. 당신처럼

describe("myDate", function() { 
    var $compile, $rootScope; 
    var validDate, invalidDate, invalidDateFormat; 

    beforeEach(angular.mock.module('main')); 

    beforeEach(inject(
    ['$compile','$rootScope', function($c, $r) { 
     $compile = $c; 
     $rootScope = $r; 
    }] 

    describe("validDate", function() { 
    it("should check if the given date is a valid date", function() { 
     validDate = '31-8-2011'; 
     expect(isValidDate(validDate)).toBe(true); 
    });   
    }); 

    describe("someOtherFunction, function() { 
    it("does something", function() { 
    // do something here 
    }); 

    it("does something else", function() { 
    // do something else here 
    }); 
    }); 

)); 

, 나는 분열 파일 단위로 내 사양 파일을 선호 (I은 'directives.js'파일이 없습니다 :

그래서 내가 뭘하는지이 같은 것입니다 모든 지시문은 모두 안에 있고, 그들은 모두 분리되어 있습니다.) 내 응용 프로그램 파일과 비슷한 방식으로 내 spec 폴더를 유지하는 편이 편하게 머무를 수 있습니다.

개인적으로 중첩의 이런 방식으로 블록을 묘사하면 개인적으로 생각해 보면 테스트를 작성하고 읽을 때 눈이 더 쉬워집니다. 그러나 실제로 성능 문제가있는 경우 하나의 설명 블록으로 전환 할 수 있으며 그 중 많은 부분 ("")이 전환 될 수 있습니다.