Javascript 可能是我的一个简单的玩笑/反应错误

Javascript 可能是我的一个简单的玩笑/反应错误,javascript,reactjs,jestjs,Javascript,Reactjs,Jestjs,我试图模拟具有以下结构的组件: //A_Form.js import React from "react"; export default React.createClass({ displayname: "A_Form", updateState: function() { // I want to mock this function as it opens a web connection } render: function()

我试图模拟具有以下结构的组件:

//A_Form.js
import React from "react";

export default React.createClass({
    displayname: "A_Form",

    updateState: function() {
        // I want to mock this function as it opens a web connection
    }    
    render: function() {
        return ( 
            <form>
                <div className='class1'>
                    <label htmlFor="name"> name </label>
                </div>
            </form>
    }
我想我已经包括了所有相关的代码。我一直在使用我调用的renderIntoDocument,因为它返回“不变冲突:元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:对象”


由于我是一个比较新的笑话和反应,任何推动合理的方向将不胜感激

啊,好吧,我想我知道发生了什么:

var a_form = React.createElement(require.requireMock("./A_Form");
看起来是抛出错误的那条线
require.requireMock(“./A_Form”)
生成一个对象(
React.createElement
需要一个组件或字符串):

如果我理解正确,您希望返回一个组件,并覆盖
updateState
方法。然而,您最终要做的是生成一个包含
A_Form
的所有方法和字段的对象(如果是这样,我认为您不能像那样解包一个对象-至少对我来说,Babel抱怨解包)和
updateState
方法

不幸的是,在React中并没有一种简单的方法来进行方法重写——看看,我认为它会为您指明正确的方向。在较高的层次上,您将只提供创建组件时要重写的方法,而不是重写

在React中也有“true”OO。。。虽然看起来有点过分

你可以试试类似的东西

return React.createComponent({ ...A_Form, updateState: () => {}); 
不过,我不确定它是否有效

{
    ... A_Form,
    updateState: jest.fn( () => { return; } )
}
return React.createComponent({ ...A_Form, updateState: () => {});