JasmineJS-테스트의 빌딩 블록

이 장에서는 Jasmine의 테스트 구성 요소에 대해 설명합니다.

스위트 블록

Jasmine은 JavaScript 용 테스트 프레임 워크입니다. SuiteJasmine 프레임 워크의 기본 구성 요소입니다. 특정 파일 또는 함수에 대해 작성된 유사한 유형의 테스트 케이스 모음을 하나의 스위트라고합니다. 그것은 두 개의 다른 블록을 포함합니다.“Describe()” 그리고 또 하나는 “It()”.

하나의 Suite 블록에는 두 개의 매개 변수 만있을 수 있습니다. “name of that suite” 그리고 또 다른 “Function declaration” 실제로 테스트 할 유닛 기능을 호출합니다.

다음 예에서는 단위 테스트 기능을 추가 할 스위트를 생성합니다. add.js파일. 이 예에서는 JS 파일 이름이“calculator.js” Jasmine을 통해 테스트되며 해당 Jasmine 사양 파일은 “CalCulatorSpec.js”.

Calculator.js

window.Calculator = { 
   
   currentVal:0,  
   varAfterEachExmaple:0, 
   
   add:function (num1) { 
      this.currentVal += num1; 
      return this.currentVal;    
   },     
   
   addAny:function () {    
      var sum = this.currentVal; 
		
      for(var i = 0; i < arguments.length; i++) { 
         sum += arguments[i]; 
      } 
      
      this.currentVal = sum; 
      Return  this.currentVal; 
   }, 
};

CalCulatorSpec.js

describe("calculator",function() { 
   
   //test case: 1  
   it("Should retain the current value of all time", function () {
      expect(Calculator.currentVal).toBeDefined();
      expect(Calculator.currentVal).toEqual(0);  
   }); 
   
   //test case: 2  
   it("should add numbers",function() {
      expect(Calculator.add(5)).toEqual(5); 
      expect(Calculator.add(5)).toEqual(10);  
   });         
    
   //test case :3   
   it("Should add any number of numbers",function () {
      expect(Calculator.addAny(1,2,3)).toEqual(6); 
   }); 
});

위의 함수에서 우리는 두 가지 함수를 선언했습니다. 함수add 해당 함수와 다른 함수에 인수로 주어진 두 개의 숫자를 추가합니다. addAny 인수로 주어진 숫자를 추가해야합니다.

이 파일을 만든 후이 파일을 “SpecRunner.html”헤드 섹션 내부. 컴파일이 성공하면 결과적으로 다음과 같은 출력이 생성됩니다.

중첩 스위트 블록

Suite 블록은 다른 Suite 블록 내에 많은 Suite 블록을 가질 수 있습니다. 다음 예제는 다른 스위트 블록 안에 다른 스위트 블록을 생성하는 방법을 보여줍니다. 다음과 같은 두 개의 JavaScript 파일을 만듭니다.“NestedSpec.js” 다른 이름은 “nested.js”.

NestedSpec.js

describe("nested",function() { 
   
   // Starting of first suite block  
   // First block    
	
   describe("Retaining values ",function () {
   
      //test case:1    
      it ("Should retain the current value of all time", function () { 
         expect(nested.currentVal).toBeDefined();   
         expect(nested.currentVal).toEqual(0);   
      });    
   }); //end of the suite block   

   //second suite block 
   describe("Adding single number ",function () {     
   
      //test case:2 
      it("should add numbers",function() { 
         expect(nested.add(5)).toEqual(5); 
         expect(nested.add(5)).toEqual(10); 
      });         
   }); //end of the suite block  

   //third suite block 
   describe("Adding Different Numbers",function () {  
   
      //test case:3 
      it("Should add any number of numbers",function() {  
         expect(nested.addAny(1,2,3)).toEqual(6);  
      });    
   }); //end of the suite block 
});

Nested.js

window.nested = { 
   
   currentVal: 0,
	
   add:function (num1) {  
      this.currentVal += num1;     
      return this.currentVal;    
   },
   
   addAny:function () { 
      Var sum = this.currentVal; 
		
      for(var i = 0;i < arguments.length; i++) { 
         sum += arguments[i]; 
      } 
		
      this.currentVal = sum; 
      return this.currentVal;    
   }  
};

위의 코드는 실행 결과 다음과 같은 출력을 생성합니다. specRunner.html head 섹션 안에이 파일을 추가 한 후 파일.

블록 설명

앞에서 설명한대로 블록 설명은 Suite 블록의 일부입니다. Suite 블록과 마찬가지로 두 개의 매개 변수를 포함합니다.“the name of the describe block” 그리고 또 다른 “function declaration”. 다음 예제에서는 Jasmine Suite 블록의 작업 흐름을 이해하기 위해 많은 설명 블록을 살펴볼 것입니다. 다음은 완전한 설명 블록의 예입니다.

describe("Adding single number ",function () { 
   
   it("should add numbers",function() { 
      expect(nested.add(5)).toEqual(5); 
      expect(nested.add(5)).toEqual(10); 
   });     
}

IT 블록

설명 블록과 마찬가지로 우리는 IT 블록도 소개했습니다. 설명 블록 안에 들어갑니다. 이것은 실제로 각 단위 테스트 케이스를 포함하는 블록입니다. 다음 코드에는IT 하나 안에 블록 describe 블록.

describe("Adding single number ",function () { 
   
   // test case : 1   
   it("should add numbers",function() {  
      expect(nested.add(5)).toEqual(5); 
      expect(nested.add(5)).toEqual(10); 
   });         
    
   //test case : 2 
   it("should add numbers",function() { 
      expect(nested.addAny(1,2,3)).toEqual(6); 
   });     
}

블록 기대

재스민 속 Expect필요한 함수 또는 JavaScript 파일에서 기대치를 작성할 수 있습니다. 아래로 온다IT블록. 하나의 IT 블록에는 둘 이상의 Expect 블록이있을 수 있습니다.

다음은 Expect 블록의 예입니다. 이 expect 블록은 JavaScript 함수 또는 JavaScript 파일을 단위 테스트하는 다양한 방법을 제공합니다. 각 Expect 블록은matcher. 매처에는 두 가지 유형이 있습니다.inbuilt matcher 그리고 또 다른 user defined matchers.

describe("Adding single number ",function () {   
   
   // test case : 1 
   it("should add numbers",function() {
      expect(nested.add(5)).toEqual(5); 
      expect(nested.add(5)).toEqual(10);
   });          
   
   //test case : 2 
   it("should add numbers",function() {
      expect(nested.addAny(1,2,3)).toEqual(6); 
   });     
}

다음 장에서는 Expect 블록의 다양한 내장 메서드의 다양한 사용에 대해 논의 할 것입니다.