【问题标题】:Jest crashes on require('react')Jest 在 require('react') 上崩溃
【发布时间】:2015-05-18 16:44:05
【问题描述】:

我正在尝试在一个新的 React 项目中设置 Jest。

package.json:

"dependencies" : {
  "react": "^0.13.1",
  "jest-cli": "^0.4.5",
  "babel-jest": "^5.2.0"
}, 
"scripts": {
  "test": "jest"
},
"jest": {
  "scriptPreprocessor": "<rootDir>/static/preprocessor.js",
  "unmockedModulePathPatterns": ["react"],
  "testFileExtensions": [
    "js",
    "jsx"
  ],
  "moduleFileExtensions": [
    "js",
    "json",
    "jsx"
  ],
  "testPathDirs": [
    "<rootDir>/static/app"
  ],
  "testDirectoryName": "test",
  "testPathIgnorePatterns": [
    "/node_modules/",
    "/bower_components/"
  ]
}

Test-test.js:

jest.dontMock('../scripts/components/shared/Test');

describe('Test', () => {
  var Test = require('../scripts/components/shared/Test');
  it('registers test', () => {
    expect("yes").toEqual("yes");
  });
});

Test.jsx:

var React = require('react');

当我在上面运行npm test 时,我得到以下信息:

My-MacBook-Pro:project user$ npm test

> Project@0.0.1 test /Users/user/Projects/project
> jest

Using Jest CLI v0.4.5
Waiting on 1 test...My-MacBook-Pro:project user$

如果我将 Test.jsx 更改为 require('lodash'),我会得到以下信息:

My-MacBook-Pro:project user$ npm test

> Project@0.0.1 test /Users/user/Projects/project
> jest

Using Jest CLI v0.4.5
 PASS  static/app/test/Test-test.js (0.517s) 
1 test passed (1 total)
Run time: 0.731s
My-MacBook-Pro:project user$

似乎添加 'react' 模块会导致 Jest 崩溃(没有任何登录终端)。我怀疑我的配置有问题,但我似乎找不到什么。

另外,有没有办法获得更详细的日志记录?现在它崩溃了,没有输出......我敢打赌,如果我有某种输出,我可以更好地调查。

【问题讨论】:

  • 你安装了react吗?我没在你的包裹里看到它。
  • 我已经安装了...我将更新我的帖子以包含相关的依赖项
  • 如果您在 it() 函数中将需要 Test 的行移到那里,会有什么不同吗?
  • 不,在 it() 函数中移动 var Test = require(...) 没有帮助。我得到同样的东西。我想知道是否有办法获得更详细的日志记录,因为现在它只是崩溃而没有输出?

标签: javascript reactjs jestjs


【解决方案1】:

我遇到了类似的问题。我认为问题在于 Jest 不支持高于 0.10.x (source) 的节点版本。我建议使用nvm 在受支持的版本中运行您的测试。

*时态编辑

【讨论】:

  • 嗨@humble.rumble,我应该使用正确的时态。我遇到了类似的问题,我对用户问题的回答解决了这个问题。话虽如此,我仍然建议使用 nvm 来运行他的测试,因为 Jest 不支持节点 0.10.x 以上的任何东西
  • 谢谢@HammelAm,这似乎有帮助!我现在看到一个错误——dyld: lazy symbol binding failed: Symbol not found: _node_module_register。有什么想法?
  • 跟进,用iojs代替node。 nvm install iojs 并重新运行您的测试。
猜你喜欢
  • 2018-12-16
  • 2019-06-01
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 2019-12-30
  • 2019-07-30
相关资源
最近更新 更多