AngulaJs自動化測試之Karma和Jasmine

1、入門簡介

Karma和Jasmine的基本瞭解,參考另一篇文章Angularjs官方示例項目之單元測試套件karma-jasminepython


2、Karma配置

TBDgit


3、Jasmine

Jasmine的官方文檔參考:Jasmine Behavior-Driven JavaScript Documentation 上面有很一個很詳細的測試示例。github

套件細則spec

Jasmine的核心套件是describe()函數,它是一個全局函數,能夠在測試時被全局調用。數組

describe(specName, function(){})函數有兩個參數,分別是細則spec套件的名字和測試套件的函數。describe()是能夠嵌套的,也就是說能夠在一個describe()的第二個參數函數中,再定義個describe()。函數

經過調用it()全局函數來在describe()中定義一個細則spec。單元測試

describe('A spec suite', functoin(){
    it('constains a equal spec', {
        expect(true).toBe(ture);
    });
});

一個describe()中能夠有多個細則spec,同時,一個spec細則中也能夠有多個預期expect斷言項。可是,只有一個細則中因此的斷言項目都經過,纔算是經過一個細則spec。測試


設置函數beforeEach和afterEach

beforeEach(functon) 傳入的參數是一個函數,該函數會在每一個細則describe運行以前被調用。ui

同理,afterEach(function)則是在每一個細則describe運做以後被調用。this


預期與匹配器(斷言庫)

測試時,咱們是想要知道某個斷言條件下應用是符合咱們的預期expect的。好比:「若是咱們點擊了這個按鈕,咱們會指望有什麼結果。」在jasmine中,使用expect(needTestedValue)函數來建立這個預期,其參數表示咱們真實的須要被測試的值。
spa

相應的,有須要測試的值,就有咱們期待的值。這個期待值就保存在匹配器macher,好比內置的toBe(expectedValue)中。

最後的語法相似與

expect(needTestedValue).macher(expectValue)

一個代碼示例以下:

describe('A spec suite', functoin(){
    it('constains a equal spec', {
        expect(true).toBe(ture);
    });
    
    // you can use 'not'
     it('constains a  not equal spec', {
        expect(true).not.toBe(false);
    });   
});


內置的匹配器有:

//比較x和y是否值相等,至關於==
expect(x).toEqual(y);

//比較x和y是否不相等
expect(x).not.toEqual(y);

//比較x和y是不是相同的對象,至關於JavaScript中的"==="
expect(x).toBe(y);

//比較x是否匹配pattern正則
expect(x).toMatch(pattern);

//x是否爲undefined
expect(x).toBeDefined();

//x是否爲null
expect(x).toBeNull();

//x是否爲true
expect(x).toBeTruthy();

//x是否爲false
expect(x).toBeFalsy();

//y是在數組x中(x能夠是字符串或數組)
expect(x).toContain(y);

//x是否比y小
expect(x).toBeLessThan(y);

//x是否比y大
expect(x).toBeGreaterThan(y);

//x是否在一個指定的浮點精度內與y相近
expect(x).toBeCloseTo(y);

//函數是否拋出異常
expect(fn).toThrow(e);

自定義匹配器

自定義方法是在Jasmine塊中調用addMachers()函數

describe('A spec suite', functoin(){
    tihs.addMachers({
        customerMacher: function(expected) {
            // customer rule
            return this.actual <= expected;
        }
    });
});

這樣就能夠在測試套件中使用自定義的  customerMacher 匹配器了。

相關文章
相關標籤/搜索