JasmineJS - Building Block of Test

Dalam bab ini, kita akan membahas blok bangunan pengujian oleh Jasmine.

Blok Suite

Jasmine adalah framework pengujian untuk JavaScript. Suiteadalah blok bangunan dasar kerangka Jasmine. Kumpulan kasus uji tipe serupa yang ditulis untuk file atau fungsi tertentu dikenal sebagai satu rangkaian. Ini berisi dua blok lainnya, satu adalah“Describe()” dan satu lagi “It()”.

Satu blok Suite hanya dapat memiliki dua parameter, satu “name of that suite” dan lainnya “Function declaration” yang benar-benar memanggil fungsionalitas unit kami yang akan diuji.

Dalam contoh berikut, kita akan membuat suite yang akan menguji unit fungsi add add.jsmengajukan. Dalam contoh ini, kami memiliki file JS kami bernama“calculator.js” yang akan diuji melalui Jasmine, dan file spesifikasi Jasmine yang terkait adalah “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); 
   }); 
});

Dalam fungsi di atas, kami telah mendeklarasikan dua fungsi. Fungsiadd akan menambahkan dua angka yang diberikan sebagai argumen untuk fungsi itu dan fungsi lainnya addAny harus menambahkan angka apapun yang diberikan sebagai argumen.

Setelah membuat file ini, kita perlu menambahkan file ini “SpecRunner.html”di dalam bagian kepala. Jika kompilasi berhasil, ini akan menghasilkan keluaran berikut sebagai hasilnya.

Blok Suite Bersarang

Blok suite dapat memiliki banyak blok suite di dalam blok suite lain. Contoh berikut akan menunjukkan kepada Anda bagaimana kita dapat membuat blok suite berbeda di dalam blok suite lain. Kami akan membuat dua file JavaScript, satu bernama sebagai“NestedSpec.js” dan lainnya bernama sebagai “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;    
   }  
};

Potongan kode di atas akan menghasilkan keluaran berikut sebagai hasil dari menjalankan specRunner.html file setelah menambahkan file ini di dalam bagian head.

Jelaskan Blok

Seperti yang dibahas sebelumnya, gambarkan blok adalah bagian dari blok Suite. Seperti blok Suite, ini berisi dua parameter, satu“the name of the describe block” dan lainnya “function declaration”. Dalam contoh kami yang akan datang, kami akan membahas banyak blok yang menggambarkan untuk memahami alur kerja blok suite Jasmine. Berikut ini adalah contoh blok deskripsi lengkap.

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

Blok IT

Seperti mendeskripsikan blok kami telah diperkenalkan ke blok IT juga. Ini masuk dalam blok yang menggambarkan. Ini adalah blok yang sebenarnya berisi setiap kasus uji unit. Pada kode berikut, terdapat potonganIT blok di dalam satu describe blok.

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

Harapkan Blok

Melati Expectmemungkinkan Anda untuk menuliskan harapan Anda dari fungsi yang diperlukan atau file JavaScript. Itu datang di bawahITblok. Satu blok IT dapat memiliki lebih dari satu blok Expect.

Berikut adalah contoh blok Expect. Blok harapan ini menyediakan berbagai macam metode untuk menguji unit fungsi JavaScript atau file JavaScript Anda. Setiap blok Expect juga dikenal sebagai amatcher. Ada dua jenis pencocokan, satuinbuilt matcher dan lainnya 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); 
   });     
}

Pada bab-bab selanjutnya, kita akan membahas berbagai penggunaan metode bawaan yang berbeda dari blok Expect.