2016-11-23 4 views
1

У меня есть модуль, который я пытаюсь проверить. Этот модуль использует другие внешние модули, и шутка с трудом решает их.jest-resolve вложенный модуль, разрешающий неправильный путь: не удается найти модуль «response-dnd» из «reactTags.js»

Она разрешения базового пути: ./node_modules/react-tag-input/dist-modules/

Вместо: ./node_modules/react-tag-input/node_modules/ реагируют, DND

Ниже представлена ​​упрощенная версия того, что происходит:

Ошибка:

Cannot find module 'react-dnd' from 'reactTags.js' 

    at Resolver.resolveModule (node_modules/jest-cli/node_modules/jest-resolve/build/index.js:160:17) 
    at Object.<anonymous> (node_modules/react-tag-input/dist-modules/reactTags.js:13:17) 
    at Object.<anonymous> (src/tagger/eventtagger.js:5:404) 

Это мой тестовый файл: caseevent.test.js

import EventTagger from './eventtagger.js'; 

eventtagger.js

import ReactTags from 'react-tag-input'; 

package.json

"jest": { 
    "moduleFileExtensions": [ 
     "js", 
     "jsx" 
    ], 
    "modulePaths": [ 
     "<rootDir>" 
    ], 
}, 
"dependencies": { 
    "babel-jest": "^17.0.2", 
    "flux": "^2.0.1", 
    "install": "^0.8.1", 
    "jest": "^17.0.3", 
    "lodash.flow": "^3.3.0", 
    "npm": "^3.10.6", 
    "object-assign": "^1.0.0", 
    "react": "^15.4.0", 
    "react-dnd": "git+https://github.com/jcrogel/react-dnd.git", 
    "react-dnd-html5-backend": "^2.0.0", 
    "react-dom": "^15.4.0", 
    "react-tag-input": "^4.4.0", 
    "react-tagcloud": "^0.6.1" 
}, 
"devDependencies": { 
    "babel-cli": "^6.9.0", 
    "babel-core": "^6.14.0", 
    "babel-eslint": "^4.1.3", 
    "babel-loader": "^6.2.5", 
    "babel-preset-es2015": "^6.0.15", 
    "babel-preset-react": "^6.0.15", 
    "babel-preset-stage-0": "^6.0.15", 
    "babel-register": "^6.9.0", 
    "chai": "^3.5.0", 
    "enzyme": "^2.6.0", 
    "jest-cli": "^17.0.3", 
    "jsdom": "^9.4.0", 
    "lodash": "4.14.1", 
    "react-addons-test-utils": "^15.4.0", 
    "react-native": "^0.38.0", 
    "react-test-renderer": "15.4.0", 
    "sinon": "^1.17.4", 
    "webpack": "^1.13.1", 
    "webpack-dev-server": "^1.14.1", 
    "whatwg-fetch": "^2.0.1" 
} 

Что мне не хватает? Как получить jest-solve для поиска или издевательства над более глубокими компонентами?

ответ

1

У меня такая же проблема. Некоторые вещи, которые я покушения:

jest.unmock (модуль) в верхней части файла тестирования polyfill модуля в Jest установочного файла jest.mock (jest.fn() => {console.log («делать что-то»)) Наконец, и это, казалось, работало, но я не могу найти документацию по этому поводу:

в верхней части файла тестирования:

/** * @providesModule MODULENAME */

Это, кажется, признает модуль I n eeded. Предполагается, что Jest неявно видит модули из коробки, но у меня не было этого опыта.

0

У меня была аналогичная проблема в тестах jest с внешней зависимостью веб-пакета.

Чтобы решить, что:

  1. создать __mocks__ папку в том же уровне, если __test__ папка.
  2. Внутри я создал файл с тем же именем зависимости, в моем случае это был jquery ($ .js).
  3. Внутри тестового файла я использую функцию jest.mock для ссылки на ложную внешнюю зависимость: jest.насмехаться ('$');

из шутя Документы: https://facebook.github.io/jest/docs/manual-mocks.html

Надеются, что это может помочь.