Импорт макетов в реакции / шутке с помощью правила ESLint no-mocks-import - PullRequest
0 голосов
/ 30 марта 2020

Так что я немного смущен этим правилом и ударил стену, пытаясь это исправить. В описании сказано, что я не должен импортировать из __mocks__ каталогов вручную. В настоящее время у меня есть это:

import { Breadcrumbs as BreadcrumbsView } from '../../__mocks__'

Что, конечно, приводит к этой ошибке ESLint. __mocks__ напрямую имеет поддиректории и файл index.js, который экспортирует все необходимые макеты из этих поддиктариев.

Сам макет прост:

import React from 'react'


export const Breadcrumbs = (props) => (
  <div>
    {props?.children}
  </div>
)

Если я сделаю это:

jest.mock('../../__mocks__')

const { Breadcrumbs: BreadcrumbsView } = require('../../__mocks__')

Тогда это правило проходит (даже не уверен, что это даже правильное решение, поскольку у меня все еще есть __mocks__ в пути), но тогда правило import/no-commonjs не выполняется, так как я использую require.

Если я использую import вместо require, то при запуске теста я получаю следующую ошибку:

Test suite failed to run

Jest encountered an unexpected token

This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

Here's what you can do:
 • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
 • If you need a custom transformation specify a "transform" option in your config.
 • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/en/configuration.html

Details:

/*path-to-project*/packages/app/src/lib/breadcrumbs/__tests__/utils/getBreadcrumbContext.test.js:37
var _ref = import('../../__mocks__'),
           ^^^^^^

SyntaxError: Unexpected token import

  at ScriptTransformer._transformAndBuildScript (../../node_modules/jest-runtime/build/script_transformer.js:403:17)

Может кто-нибудь объяснить, пожалуйста, что это за решение и что я не так?

Позвольте мне также отметить, что я использую Node версии 10.13.0. Возможно, это как-то связано.

...