JasmineJS - Kiểm tra Ngoại lệ

Ngoài các trình so khớp tính toán khác nhau, Jasmine cung cấp một số trình so khớp hữu ích để kiểm tra ngoại lệ của chương trình. Hãy để chúng tôi sửa đổi JavaScript của mình với bộ mã sau.

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

Trong ví dụ trên, chúng tôi đã tạo một phương thức cố tình ném một ngoại lệ từ phương thức đó và trong khối mong đợi, chúng tôi mong đợi sẽ bắt được lỗi. Nếu mọi thứ suôn sẻ thì đoạn mã này sẽ mang lại kết quả đầu ra như sau.

Bây giờ, để trường hợp thử nghiệm này không thành công, chúng ta cần bỏ qua câu lệnh ném đó trong hàm throwMeAnError. Sau đây là đoạn mã sẽ mang lại một ảnh chụp màn hình màu đỏ làm đầu ra vì mã không đáp ứng yêu cầu của chúng tôi.

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

Có thể thấy, chúng tôi đã nhận xét dòng đó từ nơi phương pháp của chúng tôi đã ném ngoại lệ. Sau đây là kết quả của đoạn mã trên khi thực thi thành công SpecRunner.html.

Jasmine.Any ()

Anylà trình đối sánh đặc biệt được sử dụng khi chúng tôi không chắc chắn về đầu ra. Trong ví dụ sau, chúng ta sẽ tìm hiểu cách hoạt động của điều này. Hãy để chúng tôi sửa đổicustomerMatcher.js với đoạn mã sau.

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

Ở đây chúng tôi đã khai báo một hàm sẽ cung cấp cho chúng tôi tổng các số được cung cấp dưới dạng đối số. Trong khối kỳ vọng, chúng tôi mong đợi rằng kết quả có thể là bất kỳ thứ gì nhưng nó phải là Số.

Vì cả 9 và 9 sau tổng kết quả 18 là một số, nên bài kiểm tra này sẽ vượt qua và nó sẽ tạo ra ảnh chụp màn hình màu xanh lục sau đây làm đầu ra.

Bây giờ chúng ta hãy thay đổi mã theo đoạn mã sau, nơi chúng ta đang mong đợi một biến kiểu chuỗi làm đầu ra của hàm 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));    
   });
});

Sau đây là kết quả của đoạn mã trên.