2016-11-23 12 views
1

私はテストしようとしているモジュールを持っています。そのモジュールは他の外部モジュールを使用しているので、冗談はそれらを解決するのに苦労しています。jest-resolveネストされたモジュールが間違ったパスを解決しています: 'reactTags.js'から 'react-dnd'モジュールを見つけることができません

それがベースパスを解決される。 ./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" 
} 

私は何が欠けていますか?より深いコンポーネントを見つけたり、模擬したりするためにどうすればよいのですか?

答えて

1

私も同じ問題があります。私が試みられてきたいくつかの点:

jest.unmock(モジュール)テストファイル の上部には、(冗談セットアップファイル jest.mock(jest.fn()=> {にconsole.logでモジュールをポリフィル))「何かを行う」 最後に、これが動作するように見えますが、私はこの上のドキュメントを見つけることができません。

テストファイルの先頭に:

/** * @providesModule moduleNameの */

これは、モジュールI n去った。 Jestは暗黙のうちにモジュールをすぐに見ることになっていますが、私はその経験を持っていません。

0

ウェブパックの外部依存性を伴う私のテストでは、同様の問題がありました。それを解決するために

  1. __test__フォルダ場合、私は同じレベルで__mocks__フォルダを作成します。
  2. その中で、依存関係と同じ名前のファイルを作成しました。私の場合、jquery($ .js)でした。
  3. 私のテストファイルの中で、私はjest.mock関数を使って外部の依存関係mockを参照しています:jest。mock( '$');冗談から

ドキュメント: https://facebook.github.io/jest/docs/manual-mocks.html

はそれが助けることができる願っています。

関連する問題