Jasmine 學習筆記

       jasmine是js的一個測試框架,本文就主要講解最簡單的jasmine。首先先來一個最簡單的測試用例:框架

describe("calculate", function() { it("should be able to return  the sum", function() { expect(calculate.count(2,3).toEqual(5); });

       首先呢,jasmine測試框架是以describe開頭,接受兩個參數,一個是字符串,一個是函數。字符串是用來描述你正在測試的內容(這裏就是要測試的是calculate類,下面有不少的方法,我這裏只測試了計算兩個數的和),函數就是你要測試的代碼函數,裏面的it函數也是接受兩個參數,一個是字符串,一個是函數,字符串也是用來描述這個測試案例具體正在測試的功能,expect就是指望值,當這個指望值爲真的時候,測試就算是經過了。dom

       expect裏面提供了不少種方法,例如這裏的toEqual就是判斷兩個對象是否相等,還有toBe  ,  toBeDefined等等不少方法。再看一個簡單的測試用例:函數

describe("示例", function() { var a; beforeEach(function() { a = 0; a += 1; }); afterEach(function(){ a = 0; }); it("測試", function() { expect(a).toEqual(1); }); });

       jasmine還提供了beforeEach和afterEach函數,按照字面上的意思來講,beforeEach是在describe裏面的全部小測試(也就是it)以前執行(好比說你要在後面不少個的it裏面都使用到某一個變量或者其餘,就能夠在beforeEach裏面寫),而afterEach顯然是全部測試以後執行(測試完了須要幹什麼,就能夠寫在afterEach裏面)。固然了,這兩個函數不必定必須。再看一個簡單的測試用例:學習

describe("guess_number",function(){ var answer; var game; beforeEach(function () { answer = new AnswerGenerator(); spyOn(answer,'generate_random_number').and.returnValue('1234'); game = new Guess(answer); }); it("guess right should be able to return 4A0B!", function () { expect(game.guess_answer('1234')).toEqual(true); }); } );

       這個是測試一個game類,用來判斷輸入的數字與隨機生成的數字是否相等。測試

       看到spyOn了嗎?,這也是jasmine裏面的,我在學習這個的時候師兄們告訴我說的是這個能夠使得你的函數是可控的,好比這裏的隨機數的生成,返回值是不可控的,就能夠經過spyOn使得返回值可控。(白話文說就是assume某個變量或者函數是可控的),相應的有針對spy這個的測試的兩個函數,toHaveBeenCalled用來測試你spy這個函數是否被調用了,toHaveBeenCalledWith用來測試調用時的參數,匹配的話返回true。例如:spa

expect(answer.generate_random_numbe).toHaveBeenCalled();

        用來測試generate_random_number這個函數是否被調用了。code

        小節:jasmine寫測試的時候只要記住describe(分組),it(單個用例),expect(指望),什麼匹配函數什麼的,首先是寫decrible而後在裏面寫it,expect 裏面還能夠嵌套describe,測試主要是爲了查看咱們的代碼有沒有按照咱們須要的那樣去執行。對象

相關文章
相關標籤/搜索