javascript - jest-resolve 嵌套模块解析错误路径 : Cannot find module 'react-dnd' from 'reactTags.js'

标签 javascript reactjs jestjs babel-jest

我有一个要测试的模块。该模块正在使用其他外部模块,开 Jest 很难解决它们。

它正在将基本路径解析为: ./node_modules/react-tag-input/dist-modules/

代替: ./node_modules/react-tag-input/node_modules/react-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-resolve 来查找或模拟更深层次的组件?

最佳答案

我也遇到了同样的问题。我尝试过的一些事情:

测试文件顶部的 jest.unmock(module) 在 Jest 安装文件中填充模块 jest.mock(jest.fn() => {console.log('做某事')) 最后,这似乎可行,但我找不到关于此的文档:

在测试文件的顶部:

/** * @providesModule 模块名称 */

这似乎识别了我需要的模块。 Jest 应该隐式地看到开箱即用的模块,但我没有这方面的经验。

关于javascript - jest-resolve 嵌套模块解析错误路径 : Cannot find module 'react-dnd' from 'reactTags.js' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40775074/

相关文章:

javascript - 未为立即调用的函数提升 const 变量

javascript - else if javascript 中的语句无法显示验证消息

css - 语义 ui - 如何设置表格标题的样式

reactjs - 使用 jest 和 css-modules 测试 react 组件时出错

javascript - 监视 Jest 模拟

javascript - 使用 firefox 启动在系统 PATH 中找到的外部程序

javascript - 将 url 参数写入文件导致 "undefined"

javascript - 路由器 Prop 和自定义 Prop 与 typescript react 路由器DOM功能组件

javascript - 组件无法访问上下文

node.js - 使用jest模拟Node Http Request的回调响应函数