2016-11-23 173 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 */

這似乎認識到模塊我n eeded。 Jest應該隱式地看到模塊開箱即用,但我還沒有這方面的經驗。

0

我有一個類似的問題在我的笑話測試中,有一個webpack的外部依賴。

要解決:

  1. 我在同級別創建__mocks__文件夾,如果__test__文件夾。
  2. 在裏面,我創建了一個具有相同名稱的依賴文件,在我的情況下它是jQuery($ .js)。
  3. 在我的測試文件中,我使用jest.mock函數來引用模擬外部依賴:jest。模擬( '$');

從笑話文檔: https://facebook.github.io/jest/docs/manual-mocks.html

希望它可以幫助。

相關問題