Подтвердить что ты не робот

Пример повторения Жест

Я пытаюсь запустить пример 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, если это повлияет на это. Мне бы очень хотелось получить некоторые тесты на моих реактивных компонентах (у меня были проблемы с этим тоже начались с базовых примеров) - любая помощь будет оценена:)

4b9b3361

Ответ 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
  }
  ...
}