2017-02-22 5 views
0

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

App.js

import MyComp from 'comp/myComp'; 

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

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

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

Как я могу рассказать шутки только для разрешения .js и .web.js файлов так же, как веб-пакет?

Я добавил это к моему package.json и держать решения .ios.js и .android.js

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

Я попытался как это было предложено с:

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

выглядит никакого эффекта :(

ответ

1

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

См these Jest docs подробнее

+0

I попробовал '' "testPathIgnorePatterns": ["/n ode_modules/"," ^. + \\. (ios | android) \\. js $ "],' 'но все равно не работает так, как ожидалось: S – Kossel

+0

Я также пробовал с' modulePathIgnorePatterns' – Kossel

+0

Я не уверен, что ваш шаблон должен быть настолько тонко настроен. Можете ли вы попробовать снова с помощью [MyComp.android.js »,« MyComp.ios.js »] и сообщить мне, если это сработает. –

1

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

touch empty.js 

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

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

Работает идеально подходит для меня

Смежные вопросы