要回答完整问题的一个子集(这对于一组有意义的测试来说可能太复杂了,因为它需要处理很多旋钮),如果一个笑话命令行--config(或-c)提供,则忽略 package.json 笑话设置。
更具体地说,要得出这个结论,首先我在jest/config.js 中尝试了jest -c jest/config.js 和setupFilesAfterEnv:
module.exports = {
rootDir: '../',
setupFilesAfterEnv: ['./jest/global-setup.js'],
}
文件jest/global-setup.js 包含:
const Enzyme = require('enzyme')
const Adapter = require('enzyme-adapter-react-16')
require('jest-enzyme/lib/index.js')
Enzyme.configure({ adapter: new Adapter() })
这里有运行enzyme 设置的预期效果。在 jest/config.js 文件中将其注释掉并将其放入 package.json 将被跳过/忽略:
"jest": {
"setupFilesAfterEnv": ["./jest/global-setup.js"],
},
其次,我尝试jest -c jest/config.js 使用jest fileTransformer.js 文件,并在jest/config.js 中使用以下内容:
transform: {
'^.+\\.js$': 'babel-jest',
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
'<rootDir>/jest/file-transformer.js',
},
那么 package.json 的等效jest.transform 设置被跳过/忽略:
"jest": {
"transform": {
"^.+\\.js$": "babel-jest",
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/jest/file-transformer.js"
}
},
第三,将我的 npm scripts test 命令从 jest -c jest/config.js 更改为 jest 和我的 package.json 以包含以下内容,这会导致 package.json 设置按预期工作:
"jest": {
"setupFilesAfterEnv": ["./jest/global-setup.js"],
"transform": {
"^.+\\.js$": "babel-jest",
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":
"<rootDir>/jest/file-transformer.js"
}
},
用jest v24.9.0测试