使用 ?yarn
? 安裝 Jest︰
yarn add --dev jest
或使用 ?npm
? 安裝 Jest:
npm install --save-dev jest
注:Jest的文檔統(tǒng)一使用?yarn
?命令,不過使用?npm
?也是可行的。 你可以在yarn的說明文檔里看到?yarn
與?npm
?之間的對比。
讓我們開始為一個假設函數(shù)編寫測試,該函數(shù)將兩個數(shù)字相加。 首先,創(chuàng)建一個?sum.js
?文件:
function sum(a, b) {
return a + b;
}
module.exports = sum;
然后,創(chuàng)建一個名為? sum.test.js
? 的文件。 這將包含我們的實際測試:
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
將下面的配置部分添加到你的? package.json
? 里面:
{
"scripts": {
"test": "jest"
}
}
最后,運行? yarn test
? 或 ?npm run test
? ,Jest將打印下面這個消息:
PASS ./sum.test.js
? adds 1 + 2 to equal 3 (5ms)
如此一來,你就成功地寫出第一個Jest測試 !
此測試使用 ?expect
?和 ?toBe
?來測試兩個值完全相同。 若要了解Jest關于測試方面更多的能力,請參閱使用適配器。
你可以通過命令行直接運行?Jest
?(前提是?jest
?已經處于你的環(huán)境變量 ?PATH
?中,例如通過 ?yarn global add jest
? 或 ?npm install jest --global
?安裝的?Jest
?) ,并為其指定各種有用的配置項。
這里演示了如何對能匹配到 ?my-test
? 的文件運行 ?Jest
?、使用?config.json
?作為一個配置文件,并在運行完成后顯示一個原生的操作系統(tǒng)通知。
jest my-test --notify --config=config.json
如果你想要了解更多關于通過命令行來運行 ?jest
?的內容,請繼續(xù)閱讀 Jest CLI 選項 頁面。
基于你的項目,Jest將會提出幾個問題,并將創(chuàng)建一個基本的配置文件,每個選項都有一個簡短的說明:
jest --init
如果需要使用 Babel,可以通過 ?yarn
?來安裝所需的依賴。
yarn add --dev babel-jest @babel/core @babel/preset-env
可以在工程的根目錄下創(chuàng)建一個?babel.config.js
?文件用于配置與你當前Node版本兼容的Babel:
// babel.config.js
module.exports = {
presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
],
};
Babel的配置取決于具體的項目使用場景 ,可以查閱 Babel官方文檔來獲取更多詳細的信息。
使 Babel 配置具有 jest-aware
如果沒有設置為其他內容,Jest 將設置?process.env.NODE_ENV
?為?'test'
?。你可以在配置中使用它來有條件地僅設置 Jest 所需的編譯,例如
// babel.config.js
module.exports = api => {
const isTest = api.env('test');
// You can use isTest to determine what presets and plugins to use.
return {
// ...
};
};
注意:當你安裝 Jest 時,?babel-jest
? 是會被自動安裝的,并且如果你的項目下存在一個 Babel 配置文件時,它將會自動對相關文件進行轉義。 如果要避免這個行為,你可以顯式的重置 ?transform
? 配置項:
// jest.config.js
module.exports = {
transform: {},
};
Babel 6 支持
Jest 24 放棄了對 Babel 6 的支持。我們強烈建議大家升級到 Babel 7,它得到了積極維護。但是,如果你無法升級到 Babel 7,請繼續(xù)使用 Jest 23 或升級到 Jest 24 并?babel-jest
?鎖定版本 23,如下例所示:
"dependencies": {
"babel-core": "^6.26.3",
"babel-jest": "^23.6.0",
"babel-preset-env": "^1.7.0",
"jest": "^24.0.0"
}
雖然我們通常建議使用每個 Jest 包的相同版本,但此解決方法將允許你現(xiàn)在繼續(xù)使用最新版本的 Jest 和 Babel 6。
Jest 可以用于使用 webpack 來管理資源、 樣式和編譯的項目中。 webpack 與其他工具相比多了一些獨特的挑戰(zhàn)。 參考 webpack 指南 來開始起步。
Jest 可用于使用parcel bundler管理資產、樣式和編譯(類似于webpack)的項目中。包裹需要零配置。請參考官方文檔開始。
Jest 通過 Babel 支持 TypeScript。首先,請確保你遵循了上面使用 Babel 的說明。接下來,通過?yarn
?安裝?@babel/preset-typescript
?:
yarn add --dev @babel/preset-typescript
然后添加?@babel/preset-typescript
?到你的???babel.config.js
?.??
// babel.config.js
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
+ '@babel/preset-typescript',
],
};
不過,在配合使用TypeScript與Babel時,仍然有一些注意事項 。 因為 Babel 對 TypeScript 的支持是 transpilation,Jest 不會在運行時對你的測試進行類型檢查。 如果你想實現(xiàn)這個功能,你可以使用 ?ts-jest
?。
更多建議: