运行时错误运行Jest:在React中

Chr*_*ell 7 unit-testing reactjs jestjs

我无法运行Jest测试并且有一个非常模糊的错误消息.我在StackOverflow上发现了一个类似的问题,我无法通过在node_module的react文件夹中添加jestSupport的建议来解决它.

引用的问题: 如何使用Jact与React Native

    __tests__/profile-test.js
? Runtime Error
TypeError: Cannot read property 'DEFINE_MANY' of undefined
Run Code Online (Sandbox Code Playgroud)

//来自package.JSON的片段

"scripts": {
    "test": "jest"
  },
  "jest": {
    "scriptPreprocessor": "<rootDir>/node_modules/babel-jest"
  },
Run Code Online (Sandbox Code Playgroud)

//测试文件

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: 'testmcnameyname@gmail.com'}); 
          });
        };
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个问题,并有建议吗?

小智 9

把它放在package.json与"脚本"相同的水平对我有用:

"jest": {
  "unmockedModulePathPatterns": [
    "react"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的测试文件顶部没有任何jest.dontMock语句.我只将jest.unmock用于测试模块.


Nam*_*oel 2

据我所知,您需要所有模块的模拟版本。

尝试放置

jest.dontMock('react')
jest.dontMock('react-dom')
jest.dontMock('react-addons-test-utils')
jest.dontMock('../components/profile')
Run Code Online (Sandbox Code Playgroud)

在文件的顶部。

我也会摆脱:

jest.setMock('react', {});
Run Code Online (Sandbox Code Playgroud)

尝试所有这些,据我所知它应该有效。