[tools] Vitest
配置
預設不需要配置檔案也能運行,配置檔案執行優先度較高,有兩種配置檔案的撰寫方式
- 統一撰寫 於
vite.config.js - 額外撰寫一個
vitest.config.js
//撰寫於 vite.config.js
export default {
test:{
//vitest 的配置撰寫位置
}
}
官方是推薦統一撰寫在
vite.config.js內,原因是 要維護兩邊文件因為 vitest 並不會繼承 vite 的配置內容,例如你在 vite 有設定 css 要如何被編譯,但在 vitest 並不會知道這個設定,在測試時可能會因為兩邊配置不同步而衍生的問題。
下面是 vitest 主打的特色
- 預設支援 ESM
- HMR 功能,當你修改文件後會立刻更新
- 支援 Vue, React 等進行元件測試
- 支援 Typescript, JSX
- 快照測試、Mock 測試
- 包含 Jest 多數的功能
mode
預設是 watch mode ,當你變更文件時會立刻觸發改變
test API
it, test 比較
以 it , test 兩者進行測試結果上沒有差異,只是測試程式碼風格上的差別,自己的理解如下:
- 用
it撰寫在閱讀程式碼更有 情境 的感覺,可想像為it是主詞 test就是單純描述這個功能怎麼運作
舉例來說,今天要測試一個按鈕點擊後的功能
it('should become 3, when user clicks this button',()=>{
expect(wrapper.trigger('button')).toBe(3)
})
test('should become 3, when user clicks this button',()=>{
expect(wrapper.trigger('button')).toBe(3)
})
用 it 撰寫的測試,搭配 it Should 的命名風格,讀起來就有 它應該會 ... 語感,而用 test 撰寫的就比較單純是描述一個功能。
加入時間
default: 5000 ms
你可以在測試方法的第三個參數加入時間長度,也可以透過調整配置 testTimeout 修改預設值
test('test with time',()=>{
console.log('call test when time is out.')
},1000)
https://vitest.dev/config/#testtimeout
跳過特定測試
加入 skip() 可實現
- 單一測試情境跳過
- 系列測試情境跳過
//跳過單一測試
describe('many test',()=>{
//this test will be skiped
it.skip('',()=>{
})
})
//跳過整個系列測試
describe.skip('many test is skiped',()=>{
test('test1',()=>{})
test('test2',()=>{})
})