使用 vue 和 jest 测试 svg 内联

sar*_*ara 5 svg vue.js babel-jest vue-cli

当我在代码中使用内联图像时,我在测试视图时遇到问题 'src/assets/icons/circle-small.svg?inline'

我有版本:

- 巴别尔笑话:23.6.0
- vue:2.6.10

配置:

Vue 命令行界面:

const svgRule = config.module.rule('svg');
svgRule.oneOf('inline').use('vue-svg-loader').loader('vue-svg-loader').end();
Run Code Online (Sandbox Code Playgroud)

笑话配置:

  moduleFileExtensions: [
    'js',
    'vue',
  ],
  transform: {
    '^.+\\.vue$': 'vue-jest',
    '^.+\\.js$': '<rootDir>/babel-jest',
    '.+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2|svg)$': 'jest-transform-stub',
  },
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1',
  },
Run Code Online (Sandbox Code Playgroud)

我在视图中导入:

import Img from '@/assets/icons/img.svg?inline';
Run Code Online (Sandbox Code Playgroud)

我收到配置错误:

Could not locate module @/assets/icons/circle-small.svg?inline mapped as:
/some/src/assets/icons/circle-small.svg?inline.

Please check your configuration for these entries:
{
  "moduleNameMapper": {
    "/^@\/(.*)$/": "/some/src/$1"
  },
  "resolver": null
}
Run Code Online (Sandbox Code Playgroud)

当我导入内联图像时,我在配置测试时遇到问题。谁能知道我还应该配置什么或使用什么库?

sar*_*ara 6

我找到了解决方案,修改正则表达式就足够了

这是错误的:

'.+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2|svg)$': 'jest-transform-stub',
Run Code Online (Sandbox Code Playgroud)

这是正确的:

'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)(\\?inline)?$': 'jest-transform-stub',
Run Code Online (Sandbox Code Playgroud)