Использование vue и jest для тестирования svg inline - PullRequest
0 голосов
/ 21 мая 2019

У меня есть проблема с тестовым представлением, когда я использую встроенное изображение в коде 'src/assets/icons/circle-small.svg?inline'

У меня есть версии:

- babel-jest: 23.6.0
- vue: 2.6.10

Конфигурация:

Vue CLI:

const svgRule = config.module.rule('svg');
svgRule.oneOf('inline').use('vue-svg-loader').loader('vue-svg-loader').end();

Конфигурация Jest:

  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',
  },

Я импортирую в виде:

import Img from '@/assets/icons/img.svg?inline';

Я получаю ошибку конфигурации:

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
}

У меня естьпроблема с настройкой тестов для случая, когда я импортирую встроенное изображение.Может кто-нибудь знает, что еще я должен настроить или какую библиотеку использовать?

1 Ответ

0 голосов
/ 03 июля 2019

Я нашел решение, достаточно было изменить регулярное выражение

это было неправильно:

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

и это правильно:

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