谢谢杰斯特的变身 https://jestjs.io/docs/en/next/code-transformation配置设置你可以这样做。
包.json
"jest": {
"transform": {
"\\.svg$": "<rootDir>/fileTransformer.js"
}
...
}
重要的
您需要明确提供transform
到其他扩展(特别是*.js
and *.jsx
)否则你会得到错误。所以它应该是这样的:
"transform": {
"^.+\\.js$": "babel-jest",
"\\.svg$": "<rootDir>/fileTransformer.js"
...
}
As for 文件转换器.js它只是模拟导出文件的路径(您可以添加任何转换来删除路径或扩展名或其他内容):
const path = require('path');
module.exports = {
process(src, filename) {
return `module.exports = ${JSON.stringify(path.basename(filename))};`;
}
};
It means
import svgIcon from './moon.svg';
会像
const svgIcon = 'moon.svg'
所以对于包含的组件
...
<img src={svgIcon} />
你可以这样写断言
expect(imgElementYouMayFind.props.src)
.toEqual('moon.svg')