JasmineJS - 異常檢查



除了不同的計算匹配器之外,Jasmine 還提供了一些有用的匹配器來檢查程式的異常。讓我們用以下程式碼修改我們的 JavaScript 程式碼。

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

在上面的例子中,我們建立了一個方法,該方法故意從該方法中丟擲一個異常,並且在 expect 塊中,我們期望捕獲該錯誤。如果一切順利,這段程式碼將產生以下輸出。

Exception Block

現在,為了使這個測試用例失敗,我們需要省略函式 **throwMeAnError** 中的 throw 語句。以下是將產生紅色截圖作為輸出的程式碼,因為程式碼不滿足我們的要求。

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

可以看到,我們已經註釋掉了我們的方法丟擲異常的那一行。以下是上述程式碼在 SpecRunner.html 成功執行後的輸出。

Exception Error

Jasmine.Any()

**Any** 是一個特殊的匹配器,當我們不確定輸出時使用。在下面的例子中,我們將學習它是如何工作的。讓我們用以下程式碼修改 **customerMatcher.js**。

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

在這裡,我們聲明瞭一個函式,它將給出作為引數提供的數字的總和。在 expect 塊中,我們期望結果可以是任何值,但它應該是一個數字。

由於 9 和 9 相加的結果 18 是一個數字,所以這個測試將透過,並且它將生成以下綠色截圖作為輸出。

Any Method

現在讓我們根據以下程式碼更改程式碼,在這裡我們期望一個字串型別的變數作為函式 **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));    
   });
});

以下是上述程式碼的輸出。

Any Error
廣告