Я пытаюсь использовать линтер ESLint с инфраструктурой тестирования Jest.
Тесты Jest выполняются с некоторыми глобальными переменными типа jest
, о которых мне нужно рассказать линтеру; но сложность заключается в структуре каталогов, в Jest тесты встроены с исходным кодом в __tests__
папки, поэтому структура каталогов выглядит примерно так:
src
foo
foo.js
__tests__
fooTest.js
bar
bar.js
__tests__
barTest.js
Обычно у меня все тесты были бы под одним .eslintrc
каталогом , и я мог бы просто добавить туда файл, чтобы добавить глобальные переменные ... но я определенно не хочу добавлять .eslintrc
файл в каждый отдельный каталог __test__
.
Сейчас я только что добавил тестовые глобалы в глобальный .eslintrc
файл, но поскольку это означает, что теперь я могу ссылаться jest
на не тестирующий код, это не похоже на «правильное» решение.
Есть ли способ заставить eslint применять правила, основанные на некотором шаблоне, основанном на имени каталога, или что-то в этом роде?
источник
eslint-test
файл с глобусом, напримерeslint **/__tests__/*.js -c eslint-test.yml
. Тем не менее, я не думаю, что есть большая опасностьjest
илиbeforeEach
глобальная утечка в производственный код;)Ответы:
Документы показывают, что теперь вы можете добавить:
К вашему,
.eslintrc
который добавит все шутки, связанные с вашей средой, устраняя ошибки / предупреждения линтера.источник
.eslintrc
файл, который расширяет ваши настройки.eslintrc
по умолчанию в вашей__tests__
папке. Если у вас та же проблема, что и у OP (несколько тестовых папок), вы можете сгенерировать их.eslintrc
с помощью шаблона и крошечного скрипта bash (что-то вродеls **/__tests/ | xargs cp templates/.eslintrc
)ESLint поддерживает это начиная с версии> = 4:
Вот обходной путь (из другого ответа здесь, проголосуйте за него!) Для ограничения «расширение в переопределениях» конфигурации eslint:
С https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
источник
"files"
and"env"
в"overrides"
ineslint.rc
мне больше не нужно беспокоиться о специфическом синтаксисе Jest, проходящем вне тестовых файлов.Вы также можете установить тестовую среду в вашем тестовом файле следующим образом:
источник
Чтобы завершить ответ Захари, вот обходной путь для ограничения «расширение в переопределениях» конфигурации eslint:
С https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
источник
Конфигурации на основе шаблонов запланированы на выпуск 2.0L ESLint. На данный момент, однако, вам придется создать две отдельные задачи (как указано в комментариях). Один для тестов и один для остальной части кода и запуска их обоих, предоставляя различные файлы .eslintrc.
PS В следующей версии ESLint появится шутливая среда, в которой будут зарегистрированы все необходимые глобальные переменные.
источник
Я решил проблему REF
Бегать
А потом добавить в свой
.eslintrc
файлисточник
Добавить среду только для
__tests__
папкиВы можете добавить
.eslintrc.yml
файл в ваши__tests__
папки, который расширяет базовую конфигурацию:Если у вас есть только одна
__tests__
папка, это решение является наилучшим, поскольку оно распространяется только на среду, где это необходимо.Работа со многими тестовыми папками
Если у вас есть больше тестовых папок (в случае с OP), я бы все же предложил добавить эти файлы. И если у вас есть тонны этих папок, можете добавить их с помощью простого скрипта zsh:
Этот скрипт будет искать
__tests__
папки и добавлять.eslintrc.yml
файл в конфигурацию, показанную выше. Этот скрипт должен быть запущен в папке, содержащей вашего родителя.eslintrc
.источник
в некоторых ответах предполагается, что у вас установлен eslint-plugin-jest, однако, не делая этого, вы можете просто сделать это в своем
.eslintrc
файле, добавив:источник
В вашем файле .eslintignore добавьте следующее значение:
Это должно игнорировать все экземпляры каталога __tests__ и их дочерние элементы.
источник