JasmineJS - Controllo eccezioni

Oltre a diversi abbinamenti computazionali, Jasmine fornisce alcuni utili abbinamenti per controllare le eccezioni del programma. Modifichiamo il nostro JavaScript con il seguente set di codice.

var throwMeAnError = function() {   
   throw new Error(); 
};  

describe("Different Methods of Expect Block", function() {  
   var exp = 25; 

   it ("Hey this will throw an Error ", function() { 
      expect(throwMeAnError).toThrow(); 
   }); 
});

Nell'esempio precedente, abbiamo creato un metodo che lancia deliberatamente un'eccezione da quel metodo e nel blocco di attesa ci aspettiamo di rilevare l'errore. Se tutto va bene, questo pezzo di codice produrrà il seguente output.

Ora, affinché questo test case fallisca, dobbiamo omettere l'istruzione throw nella funzione throwMeAnError. Di seguito è riportato il codice che produrrà uno screenshot rosso come output poiché il codice non soddisfa i nostri requisiti.

var throwMeAnError = function() {   
   //throw new Error(); 
};   

describe("Different Methods of Expect Block",function() {  
   var exp = 25; 
   
   it("Hey this will throw an Error ", function() {  
      expect(throwMeAnError).toThrow();    
   }); 
});

Come si può vedere, abbiamo commentato quella riga da cui il nostro metodo lanciava l'eccezione. Di seguito è riportato l'output del codice precedente in caso di corretta esecuzione di SpecRunner.html.

Jasmine.Any ()

Anyè il matcher speciale che viene utilizzato quando non siamo sicuri dell'output. Nell'esempio seguente, impareremo come funziona. Modifichiamo il filecustomerMatcher.js con il seguente pezzo di codice.

var addAny = function() {
   var sum = this.currentVal; 
	
   for (var i = 0; i < arguments.length; i++) { 
      sum += arguments[i]; 
   } 
	
   this.currentVal = sum;  
   return this.currentVal; 
} 

describe("Different Methods of Expect Block",function () { 
   
   it("Example of any()", function() { 
      expect(addAny(9,9)).toEqual(jasmine.any(Number)); 
   });
});

Qui abbiamo dichiarato una funzione che ci darà la somma dei numeri forniti come argomenti. Nel blocco delle aspettative, ci aspettiamo che il risultato possa essere qualsiasi cosa ma dovrebbe essere un numero.

Poiché sia ​​9 che 9 dopo la somma restituiscono 18 è un numero, questo test passerà e genererà il seguente screenshot verde come output.

Ora cambiamo il codice in base al seguente pezzo di codice, dove ci aspettiamo una variabile di tipo stringa come output della funzione AddAny().

var addAny = function() { 
   var sum = this.currentVal; 
	
   for(var i = 0; i < arguments.length; i++) { 
      sum += arguments[i]; 
   } 
	
   this.currentVal = sum; 
   return this.currentVal; 
}  

describe("Different Methodsof Expect Block",function () { 
   it("Example of any()", function () { 
      expect(addAny(9,9)).toEqual(jasmine.any(String));    
   });
});

Di seguito è riportato l'output del codice precedente.