測試篩選
套件與測試的篩選、逾時設定及並行執行
命令列介面 (CLI)
您可以使用 CLI 依名稱篩選測試檔案:
bash
$ vitest basic
此指令將僅執行名稱中包含 basic
的測試檔案,例如:
basic.test.ts
basic-foo.test.ts
basic/foo.test.ts
您也可以使用 -t, --testNamePattern <pattern>
選項,依據測試的完整名稱進行篩選。當您希望根據檔案中定義的測試名稱而非檔案名稱本身進行篩選時,此選項會非常有用。
自 Vitest 3 起,您還可以透過檔案名稱和行號來指定測試:
bash
$ vitest basic/foo.test.ts:10
WARNING
請注意,Vitest 需要完整的檔案路徑才能使此功能正常運作。此路徑可以是相對於目前工作目錄的相對路徑,也可以是絕對檔案路徑。
bash
$ vitest basic/foo.js:10 # ✅
$ vitest ./basic/foo.js:10 # ✅
$ vitest /users/project/basic/foo.js:10 # ✅
$ vitest foo:10 # ❌
$ vitest ./basic/foo:10 # ❌
目前 Vitest 尚不支援範圍表示法:
bash
$ vitest basic/foo.test.ts:10, basic/foo.test.ts:25 # ✅
$ vitest basic/foo.test.ts:10-25 # ❌
設定逾時
您可以選擇性地將逾時時間(以毫秒為單位)作為第三個參數傳遞給測試。預設值為 5 秒。
ts
import { test } from 'vitest';
test('name', async () => {
/* ... */
}, 1000);
勾子(Hooks)同樣可以接收逾時參數,預設值也是 5 秒。
ts
import { beforeAll } from 'vitest';
beforeAll(async () => {
/* ... */
}, 1000);
跳過套件與測試
使用 .skip
來跳過執行特定的套件或測試。
ts
import { assert, describe, it } from 'vitest';
describe.skip('skipped suite', () => {
it('test', () => {
// 此套件已被跳過,不會產生錯誤
assert.equal(Math.sqrt(4), 3);
});
});
describe('suite', () => {
it.skip('skipped test', () => {
// 此測試已被跳過,不會產生錯誤
assert.equal(Math.sqrt(4), 3);
});
});
選擇要執行的套件與測試
使用 .only
來僅執行特定的套件或測試。
ts
import { assert, describe, it } from 'vitest';
// 只有此套件(以及其他標記為 .only 的套件)會被執行
describe.only('suite', () => {
it('test', () => {
assert.equal(Math.sqrt(4), 3);
});
});
describe('another suite', () => {
it('skipped test', () => {
// 此測試會被跳過,因為目前處於 .only 模式
assert.equal(Math.sqrt(4), 3);
});
it.only('test', () => {
// 只有此測試(以及其他標記為 .only 的測試)會被執行
assert.equal(Math.sqrt(4), 2);
});
});
待實作的套件與測試
使用 .todo
為待實作的套件和測試建立存根。
ts
import { describe, it } from 'vitest';
// 報告中將顯示此套件的條目
describe.todo('unimplemented suite');
// 報告中將顯示此測試的條目
describe('suite', () => {
it.todo('unimplemented test');
});