Jest: не удается найти модуль, необходимый внутри модуля для тестирования (относительный путь)

у меня есть этот компонент:

import React from 'react';
import VideoTag from './VideoTag';
import JWPlayer from './JWPlayer';

class VideoWrapper extends React.Component {
//... component code
}

это на основе некоторой логики отображает другой компонент внутри (VideoTag или JWPlayer), но когда я пытаюсь проверить его в файле шутки, я получаю ошибку:

не удается найти модуль './ VideoTag'

три coponents находятся в одном каталоге, поэтому он действительно работает, когда я транспилирую его и вижу его в действии в браузере, но похоже, что у Jest есть проблемы с разрешением этих относительных путей, это файл шутки:

jest.dontMock('../src/shared/components/Video/VideoWrapper.jsx');

import React from 'react';
import ReactDOM from 'react-dom';
TestUtils from 'react-addons-test-utils';

import VideoWrapper from '../src/shared/components/Video/VideoWrapper.jsx';

describe('VideoWrapper tests', () => {
  it('Render JWPlayer', () => {

      let vWrapper = TestUtils.renderIntoDocument(
      < VideoWrapper model={model} />
  );

  });
});

ошибка в строке:

import VideoWrapper from '../src/shared/components/Video/VideoWrapper.jsx';

как я могу сказать jest, как обрабатывать относительные пути?

3 ответов


проблема была не в путях ,она искала только модули.расширение js, оно работало после добавления .jsx в конфигурации jest:

"moduleFileExtensions": [
  "js",
  "jsx"
]

вам не нужно добавлять moduleFileExtensions в конфигурацию для этих двух параметров, так как jest использует ['js', 'jsx', 'json', 'node'] в качестве расширений файлов по умолчанию. (Если вы не хотите специально пропустить какой-либо вариант)


для других, заканчивающих здесь, пытаясь использовать шутку с TypeScript: вам нужно включить ts на moduleFileExtensions, например:

"moduleFileExtensions": [
  "js",
  "jsx",
  "json",
  "node",
  "ts"
]

вам также нужно преобразование для *.ts файлы:

transform: {
  "^.+\.vue$": "vue-jest",
  "^.+\.js$": "babel-jest",
  "^.+\.(ts|tsx)$": "ts-jest"
},