jest配置
jest配置如下:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: [
"**/__tests__/**/*.[jt]s?(x)",
"**/?(*.)+(spec|test).[tj]s?(x)",
"**/test/**/*.[jt]s?(x)",
],
testPathIgnorePatterns: [
'<rootDir>/node_modules/',
],
collectCoverageFrom: [
'src/**/*.{js,jsx,ts,tsx}',
'!src/**/*.d.ts',
],
moduleDirectories: [
'node_modules'
],
moduleFileExtensions: [
'js',
'jsx',
'json',
'node',
],
transform: {
"\\.[jt]sx?$": "babel-jest",
},
// babelrc: true
};
額外配置說明:
- 其中transform增加了jest的es6處理能力。默認(rèn)情況下jest只能處理require文件,當(dāng)配置tranform后可以對impoet文件進行處理
- prese和testEnvironment為jest增加ts處理能力
- 注意jest文件應(yīng)當(dāng)放在需要進行單元測試的目錄,jest將按照其配置文件所子目錄按照一定順序進行文件解析
但即使增加了ts處理能力,仍然不能對引入文件的interface等作出正確解析。
tsconfig
鑒于以上問題,使用tsc將引入文件轉(zhuǎn)化為js進行處理。為了不影響項目的ts處理,將該ts配置命名為tsconfig.test.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"outDir": "./test",
"esModuleInterop": true
},
"include": ["pages/Board/Chart/chartUtils.ts"],
"exclude": ["node_modules"]
}
并在測試命令當(dāng)中指定該測試ts文件所在位置
"test": "tsc --project ./web/tsconfig.test.json && jest"
至此,當(dāng)運行test命令的時候會先將引入文件轉(zhuǎn)成js文件,并將該js文件輸出到測試目錄當(dāng)中,避免對源文件的侵入性
然后在測試文件當(dāng)中引入已經(jīng)轉(zhuǎn)換好的待測試文件即可文章來源:http://www.zghlxwxcb.cn/news/detail-619368.html
寫在結(jié)尾
- 本文僅提供jest的ts支持思路中的某一種,并假定你已經(jīng)具備:
- 獨立配置tsconfig的能力
- 獨立配置jest的能力
- 如果你的代碼涉及esnext可能需要獨立配置babel的能力
暫時不太了解以上方案推薦去看一下官方文檔就行了文章來源地址http://www.zghlxwxcb.cn/news/detail-619368.html
到了這里,關(guān)于jest單元測試支持ts文件方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!