
- JasmineJS 教程
- JasmineJS - 首頁
- JasmineJS - 概述
- JasmineJS - 環境設定
- JasmineJS - 書寫測試 & 執行
- JasmineJS - BDD 架構
- JasmineJS - 測試的構建塊
- JasmineJS - 斷言
- JasmineJS - 跳過塊
- JasmineJS - 等值檢查
- JasmineJS - 布林值檢查
- JasmineJS - 順序檢查
- JasmineJS - 空值檢查
- JasmineJS - 不等值檢查
- JasmineJS - 非數字檢查
- JasmineJS - 異常檢查
- JasmineJS - beforeEach()
- JasmineJS - afterEach()
- JasmineJS - 間諜 (Spies)
- JasmineJS 有用資源
- JasmineJS - 快速指南
- JasmineJS - 有用資源
- JasmineJS - 討論
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 塊中,我們期望捕獲該錯誤。如果一切順利,這段程式碼將產生以下輸出。

現在,為了使這個測試用例失敗,我們需要省略函式 **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 成功執行後的輸出。

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 是一個數字,所以這個測試將透過,並且它將生成以下綠色截圖作為輸出。

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

廣告