Пример повторения Жест
Я пытаюсь запустить пример React из учебника Jest React, но я получаю ошибки
λ npm test
> ...
> jest
Found 1 matching tests...
FAIL __tests__\CheckboxWithLabel-test.js (0.551s)
npm ERR! Test failed. See above for more details.
npm ERR! not ok code 0
Я довольно много скопировал код непосредственно из примера. Пакет .json выглядит следующим образом:
{
"dependencies": {
"react": "*",
"react-tools": "*"
},
"scripts":{
"test": "jest"
},
"jest": {
"scriptPreprocessor": "<rootDir>/preprocessor.js",
"unmockedModulePathPatterns": [
"<rootDir>/node_modules/react"
]
},
"devDependencies": {
"jest-cli": "~0.1.17"
}
}
Любые мысли о том, что я могу сделать, чтобы решить эти ошибки и успешно запустить тестовый пример? Очень возможно, что я пропускаю важную деталь (или детали), но не совсем уверен, что. О, и для чего это стоит, я запускаю это на Windows, если это повлияет на это. Мне бы очень хотелось получить некоторые тесты на моих реактивных компонентах (у меня были проблемы с этим тоже начались с базовых примеров) - любая помощь будет оценена:)
Ответы
Ответ 1
Я создал issue на своей странице github. Ожидание выяснения, действительно ли это проблема с окнами
В то же время, в конечном итоге, он начал работать, просто указав имя модуля, а не относительный путь
"unmockedModulePathPatterns": ["react"]
Ответ 2
Для всех, кто попадает сюда при поиске по этому вопросу, проблема @ron github была в конечном счете решена, и было заключено, что unmockedModulePathPatterns ожидает, что массив констант регулярных выражений соответствует пути к файлам, а не сами пути к файлам. Вот почему работали "относительные" пути. Из документов Jest API:
Массив строк шаблона регулярного выражения, которые сопоставляются со всеми до того, как модуль-загрузчик автоматически вернет макет для их. Если путь к модулю соответствует любому шаблону в этом списке, это не будет автоматически высмеиваться загрузчиком модуля.
Это полезно для некоторых обычно используемых модулей "утилиты", которые почти всегда используются как детали реализации почти все время (например, подчеркивание/lo-тире и т.д.). Как правило, это лучший способ сохранить это как можно меньше и всегда используйте явные jest.mock()/jest.dontMock() в отдельных тестах. Явный для каждой тестовой установки гораздо проще для других читателей теста о среде, в которой будет протестирован тест.
Можно переопределить этот параметр в отдельных тестах явно вызывающий jest.mock() в верхней части тестового файла.
(https://facebook.github.io/jest/docs/api.html#config-unmockedmodulepathpatterns-array-string)
и из самой проблемы:
unmockedModulePathPatterns используются внутри Jest для создания RegExp, против которого будут протестированы все необходимые модули. Таким образом, вы необходимо предоставить действительный шаблон регулярного выражения. Например, это хорошо работало для меня:
> unmockedModulePathPatterns: [
> "node_modules\\" + path.sep + "react",
> "node_modules\\" + path.sep + "reflux",
> "node_modules\\" + path.sep + "react-router"
> ],
Ответ 3
<rootDir>
следует заменить фактическим путем. Похоже, что у вас нет подкаталога, с которого вы хотите начать, тогда как в некоторых случаях вам может потребоваться только запустить тесты в пути src/
, чтобы ваш пакет .json выглядел бы следующим образом:
{
...
"jest": {
"rootDir": "src",
"scriptPreprocessor": "../jest/preprocessor.js" // Note: relative to src
}
...
}