Angular項目的規模一旦變大,待執行的單元測試的數目可能是海量的。此時在開發新的單元測試時,會遇到需要屏蔽到系統裡已經非常穩定的測試,而隻執行正在開發的新單元測試。這個需求如何實作呢?
每個Angular項目檔案夾下都有test.ts, 裡面有一行語句,指定了該項目下哪些ts檔案裡的單元測試會執行:
const context = require.context('./', true, /\.spec\.ts$/);

預設情況下,src目錄下所有以.spec.ts結尾的檔案裡,包含的單元測試都會被執行。
如果我想隻執行正在開發的新單元測試,而屏蔽到以前開發好的所有單元測試,可以在require.context傳回的結構上做文章。
隻需要添加如下兩行語句:
const FILE = ['./app/ngrxdemo/service/unittest-study/demo.spec.ts'];
context.keys().filter( name => !!FILE.includes(name)).map(context);
将需要執行的單元測試檔案路徑放到FILE數組裡:
指令行運作ng test, 即可觀察到現在隻有FILE數組裡指定的一個單元測試檔案demo.spec.ts裡的測試用例被執行了