天天看點

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

describe: 定義一個test spec group,用來包裹多個specs,也稱為suite:

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

describe的第二個參數是一個函數,待測試的spec,即測試邏輯,就寫在該函數裡。

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

先執行describe,再執行beforeEach:

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

然後執行describe内層嵌套的describe:

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

這裡能看出,describe定義的單個spec,其函數會立即執行:

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

it函數定義了一個test spec,裡面必須包含expectation等測試元素。這裡的it不是某個概念的縮寫,而隻是一個代詞。

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

然後執行beforeEach,這是一個異步調用。從調用棧很難能夠分辨出這個beforeEach具體是被誰調用的:

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

StoreModule.forRoot傳回一個組裝好的NgModule結構:

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

StoreModule.forFeature: 接受的輸入參數為字元串feature和其他module export的getReducers:

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

store執行個體通過TestBed.inject注入好之後,在其私有字段_value裡,立即能看到裡面處于initial狀态的state:

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

此時從依賴注入器injector裡可以直接拿到record了,奇怪:

Angular Jasmine 裡一些常用概念學習筆記 - describe, it, beforeEach的用法

繼續閱讀