Jasmine的簡單的文法
Distribution
Distribution對應的全局函數是 describe(string,function),可以了解為是一個測試集或者測試包(官方稱之為suite),主要功能是用來劃分單元測試的,describe接受的兩個參數,string是這個測試套件的标題或者描述資訊,參數function就是實作這個測試套件。describe是可以嵌套使用的。
Specs
Specs對應全局函數是it(string,function),可以将其列了解為測試用例,it接受的兩個參數 string是這個測試用例的标題或者描述資訊,參數function是這個測試用例的具體實作。
Expectations
Expectations的對應的全局方法是 expect()斷言表達式,expect通過鍊式 Matcher 方法來比較實際值是否和預期值一緻,如果一緻就是測試通過,Matchers用于比較期望值和實際值并且可以使用not對期望結果的進行否定。
例如下段代碼
describe('describe的标題或者描述資訊', function () {
it('it 的标題或者描述資訊 也可以寫成 測試用例的标題', function () {
const a = 12;
const b = 24;
expect(a).toBe(b);
expect(a).not.toBe(null);
});
});
describe('describe的标題或者描述資訊', () => {
it('it 的标題或者描述資訊 也可以寫成 測試用例的标題', () => {
const a = 12;
const b = 24;
expect(a).toBe(b);
expect(a).not.toBe(null);
});
});
這裡的測試案例是不會通過的,因為a = 12 和 b = 24 不相等。
需要注意
- 一個測試檔案中可以包含多個 describe().
- 一個describe()中可以包含多個it().
- 一個describe()中包含的多個it()函數的中,it()的string參數不能相同,如果相同,則按照一個it()來計算,并且不會執行第二個it().
- 一個it()中可以包含多個 expect().
- 一個it()函數中,所有的expect() 都測試通過才算 it() 測試通過
生命鈎子
在jasmine中有四個全局方法作為鈎子:
- beforeEach()
- afterEach()
- beforeAll()
- afterAll()
beforeEach() 和 afterEach()
beforeEach()會在describe中的每個it的方法參數的調用前都會執行一次。
afterEach()會在describe中的每個it的方法參數的調用後都會執行一次。
在Angular中使用TestBed進行測試的時候,通常會使用 beforeEach() 來通過調用TestBed.configureTestingModule()動态建立一個用來模拟 @NgModule 的 Angular 測試子產品。
如下:
describe('PublicDataService', () => {
beforeEach(() => {
TestBed.configureTestingModule({});
});
});
beforeAll() 和 afterAll()
beforeAll()會在describe中的全部it的方法參數的調用前隻執行一次。
afterAll()會在describe中的全部it的方法參數的調用後隻執行一次。
this 關鍵字
可以在beforeEach()和afterEach()的通過this定義屬性,this中傳遞it的this。***注意這裡傳遞值的時候是值傳遞,***每個it中的this都是互相獨立的,改變it中this的屬性并不會作用于其他it,也不會影響到beforeEach()和afterEach()中的this。
對于不可用的的測試處理
- 對于describe()
将describe()替換為xdescribe(),那麼整個describe()就會跳過去
- 對于it()
在it()中使用全局的pending(reson:string)方法;
describe('describe的标題或者描述資訊', () => {
it('it 的标題或者描述資訊 也可以寫成 測試用例的标題', () => {
const a = 12;
const b = 24;
expect(a).toBe(b);
expect(a).not.toBe(null);
pending('未寫完,待續');
});
});
此時這個測試用例就會跳過去。
了解更多,請參見Jasmine官方文檔