Jest / Enzyme SVG Sprites Неожиданный токен - PullRequest
0 голосов
/ 24 сентября 2018

У меня проблема с созданием теста моментального снимка с Jest и Enzyme на компоненте с использованием SVG-спрайтов.

Я использую пакет svg-sprite-loader: https://github.com/kisenka/svg-sprite-loader

Здесьэто компонент, который доставляет ему проблемы:

import React from 'react';
import dieIcons from '../../public/images/dieIcons.svg';

const DieIcon = (props) => (
<svg className={`die__icon icon-${props.name}`} onMouseDown={props.onMouseDown} onMouseUp={props.onMouseUp} onMouseOut={props.onMouseOut}>
   <use xlinkHref={`#dieIcons_${props.name}`} />
</svg>);

export default DieIcon;

Вот ошибка Jest:

Test suite failed to run

/home/ubuntu/workspace/tabletop-app/public/images/dieIcons.svg:2
<svg style="display:none;">
^

SyntaxError: Unexpected token <

  at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/ScriptTransformer.js:289:17)
  at Object.<anonymous> (src/components/DieIcon.js:2:17)
  at Object.<anonymous> (src/components/SingleRollDie.js:2:16)

Я попытался следовать указаниям Jest о том, как обрабатывать статические активы, например:

// in package.json
"jest": {
    "moduleNameMapper": {
      "modulePaths": ["/shared/vendor/modules"],
      "moduleFileExtensions": ["js", "jsx"],
      "moduleDirectories": ["node_modules", "bower_components", "shared"],
      "\\.(svg)$": "<rootDir>/src/tests/__mocks__/fileMock.js"
    }
}

Наконец, вот ссылка на GitHub моего проекта: https://github.com/deannellis/tabletop

1 Ответ

0 голосов
/ 24 сентября 2018

Эта проблема возникает из-за того, что jest не может разрешить импорт SVG, который, я думаю, в ваших проектах обрабатывается веб-пакетом.

После небольшого чтения я наткнулся на следующий пакет, специально предназначенный длятестирование такого импорта.

Установите этот пакет:

npm install --save-dev identity-obj-proxy

Обновите свой moduleNameMapper в jest.config следующим образом:

moduleNameMapper: {
  ".+\\.(svg|png|jpg)$": "identity-obj-proxy"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...