2016-05-02 10 views
7

我無法運行Jest測試並且有非常模糊的錯誤消息。 我在StackOverflow上發現了一個類似的問題,我無法用他們在node_module的react文件夾中添加jestSupport的建議來解決它。運行時錯誤運行Jest:在React中

問題引用: How to use Jest with React Native

__tests__/profile-test.js 
● Runtime Error 
TypeError: Cannot read property 'DEFINE_MANY' of undefined 

//段從的package.json

"scripts": { 
    "test": "jest" 
    }, 
    "jest": { 
    "scriptPreprocessor": "<rootDir>/node_modules/babel-jest" 
    }, 

//測試文件

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import TestUtils from 'react-addons-test-utils'; 
import Profile from '../components/profile'; 
jest.setMock('react', {}); // put this in after reading a troubleshooting article 

//jest.autoMockOff(Profile); 


     describe('Profile'),() => { 

     it("renders a form containing user information", function() { 
      let Profile = TestUtils.renderIntoDocument(<Profile/>); 
      let renderedDOM =() => React.findDOMNode(Profile); 

      expect(renderedDOM.tagName).toBe('div'); 
      expect(renderedDOM.classList).toEqual(['value', 'image', 'btn btn-primary', 'btn btn-danger' ]); 

      var children = renderedDOM.querySelectorAll('fieldConfig.type'); //created a custom 
      expect(children.length).toBe(3); 
      expect(children[0]).toEqual({name: 'test mc nameyname', email: '[email protected]'}); 
      }); 
     }; 

有沒有人遇到這樣的問題,&有建議嗎?

+0

您是否找到解決方案? – inquisitive

+0

對不起,我沒有。在與同事交談後,我決定明確地向Mocha,Chai和Enzyme轉交錯誤消息。 –

回答

2

據我所知,你需要模擬所有模塊的版本。

嘗試把

jest.dontMock('react') 
jest.dontMock('react-dom') 
jest.dontMock('react-addons-test-utils') 
jest.dontMock('../components/profile') 

在文件的頂部。

我也想擺脫:

​​

嘗試這一切,據我可以告訴它應該工作。

9

package.json在同一水平把這個稱爲「腳本」工作對我來說:

"jest": { 
    "unmockedModulePathPatterns": [ 
    "react" 
    ] 
} 

我沒有在我的測試文件的頂部任何jest.dontMock語句。我使用jest.unmock作爲被測模塊。

+0

這也解決了我的問題,但不知道爲什麼。 –