игнорировать расширение файла с Jest

Я использую webpack resolve.extensions для «выборочного» связывания моих файлов js. например.

App.js

import MyComp from 'comp/myComp';

в папке comp/ у меня есть:

MyComp.web.js
MyComp.ios.js
MyComp.android.js

Теперь я хочу написать тест для App.js, чтобы проверить, как он отображается как веб. Но проблема в том, что Jest продолжает разрешать все 3 файла .js, и это вызывает ошибку зависимости, потому что я не запускаю команду в мобильной среде, и большинство мобильных модулей не будут работать.

как я могу сказать jest разрешать только файлы .js и .web.js так же, как webpack?

Я добавил это в свой package.json, и он продолжает разрешать .ios.js и .android.js

"moduleFileExtensions": ["web.js", "js", "jsx"],
    "moduleDirectories": [
      "node_modules",
      "main"]

Я попробовал, как было предложено:

"testPathIgnorePatterns": ["<rootDir>/node_modules/", "^.+\\.(android|ios)\\.js$"],

вроде без эффектов :(


person Yichaoz    schedule 22.02.2017    source источник


Ответы (2)


Вы можете добавить testPathIgnorePatterns в свой файл package.json. Значение представляет собой массив шаблонов регулярных выражений. Любой файл/путь, соответствующий выражению, будет проигнорирован/пропущен при тестировании.

Подробнее см. эти документы Jest.

person Jordan Bonitatis    schedule 22.02.2017
comment
Я попробовал "testPathIgnorePatterns": ["<rootDir>/node_modules/", "^.+\\.(ios|android)\\.js$"],, но все равно не работает так, как ожидалось :S - person Yichaoz; 22.02.2017
comment
Я не уверен, что ваш шаблон нуждается в такой тонкой настройке. Можете ли вы попробовать еще раз просто [MyComp.android.js, MyComp.ios.js] и дайте мне знать, если это сработает. - person Jordan Bonitatis; 22.02.2017
comment
Я пробовал с полным абсолютным путем, но он по-прежнему показывает стек ошибок из MyComp.ios.js... Я думаю, что проблема больше похожа на то, чтобы сообщить Jest, если при импорте нет расширения, решить с помощью расширения .web.js, а затем .js - person Yichaoz; 22.02.2017
comment
Интересно. Хорошо, два вопроса: 1. Какую команду вы используете для запуска тестов? Вы прогоняете их через npm? 2: Есть ли у вас какие-либо другие конфигурации Jest в вашем файле package.json? Может быть, даже опубликовать содержимое этого файла. - person Jordan Bonitatis; 22.02.2017
comment
Я нашел причину ... у него есть предустановка jest-react-native внутри шутки, я заменил ее на "preset": "react-native" и это сработало. Теперь я экспортировал в несколько конфигурационных файлов jest и отлично работает, спасибо - person Yichaoz; 23.02.2017
comment
Круто - рад, что вы смогли решить эту проблему :-) - person Jordan Bonitatis; 23.02.2017

Вы также можете переназначить файлы на пустой файл

touch empty.js

В вашей конфигурации шутки добавьте следующее

  moduleNameMapper: {
    '\\.(css|jpg|png|scss|less|sass)$': '<rootDir>/empty.js',
  },

Идеально работает для меня

person Denis Rybalka    schedule 18.01.2018