Javascript 在使用Mocha测试ReactJS时,undefined不是一个函数

Javascript 在使用Mocha测试ReactJS时,undefined不是一个函数,javascript,node.js,reactjs,mocha.js,Javascript,Node.js,Reactjs,Mocha.js,我正在尝试使用ReactJs和Mocha测试一个具有两个输入字段的表单的简单页面 当我运行测试时,我得到一个错误: TypeError: undefined is not a function at module.exports (/Users/johnp/Documents/myapp/work/projects/myapp-etd-portal/test/setup.js:5:35) at Object.<anonymous> (/User

我正在尝试使用
ReactJs
Mocha
测试一个具有两个输入字段的表单的简单页面

当我运行测试时,我得到一个错误:

    TypeError: undefined is not a function
        at module.exports (/Users/johnp/Documents/myapp/work/projects/myapp-etd-portal/test/setup.js:5:35)
        at Object.<anonymous> (/Users/johnp/Documents/myapp/work/projects/myapp-etd-portal/test/component/NameTest.js:1:28)
        at Module._compile (module.js:460:26)
        at normalLoader (/Users/johnp/Documents/myapp/work/projects/myapp-etd-portal/node_modules/babel/node_modules/babel-core/lib/babel/api/register/node.js:160:5)
        at Object.require.extensions.(anonymous function) [as .js] (/Users/johnp/Documents/myapp/work/projects/myapp-etd-portal/node_modules/babel/node_modules/babel-core/lib/babel/api/register/node.js:173:7)
        at Module.load (module.js:355:32)
        at Function.Module._load (module.js:310:12)
        at Module.require (module.js:365:17)
        at require (module.js:384:17)
        at /Users/johnp/Documents/myapp/work/projects/myapp-etd-portal/node_modules/mocha/lib/mocha.js:192:27
NameTest.js:实际测试页面

    NameTest.js
    require('../../test/setup')('<!doctype html><html><body></body></html>')
    var React          = require('react')
    var ReactAddons    = require('react/addons')
    var TestUtils = React.addons.TestUtils

describe('Name page component', function(){
    before('render element', function() {

        try {
            var renderedComponent = TestUtils.renderToString(
                <InputFieldItem />
            );
        } catch (e) {
            throw new Error(e);
        }
    });

    it('First & Last <input> fields should be of type "text"', function() {
        this.formElement = React.findDOMNode(TestUtils.findRenderedDOMComponentWithTag(renderedComponent, 'form'))
        this.firstNameElement = React.findDOMNode(TestUtils.scryRenderedDOMComponentsWithTag(renderedComponent, 'input')[0])
        this.lastNameElement = React.findDOMNode(TestUtils.scryRenderedDOMComponentsWithTag(renderedComponent, 'input')[1])

    });
});
NameTest.js
需要('../test/setup')('')
var React=require('React')
var ReactAddons=require('react/addons'))
var TestUtils=React.addons.TestUtils
描述('Name page component',function()){
在('render element',function()之前{
试一试{
var renderedComponent=TestUtils.renderToString(
);
}捕获(e){
抛出新错误(e);
}
});
它('第一个和最后一个字段应为“text”类型,函数(){
this.formElement=React.findDOMNode(TestUtils.findrenderedomcomponentwithtag(renderedComponent,'form'))
this.firstNameElement=React.findDOMNode(TestUtils.scryrrenderedtomcomponentswithtag(renderedComponent,'input')[0])
this.lastnamelement=React.findDOMNode(TestUtils.scryrrenderedtomcomponentswithtag(renderedComponent,'input')[1])
});
});
我已经设置了gulp任务,并使用:gulp bundle&&npm run test运行测试。
寻找解决方案并感谢任何帮助来解决此问题是非常令人沮丧的。

如堆栈跟踪所示,
未定义不是
setup.js:5:35
(第5行第35列)中的函数


根据切换
document.createWindow()
以查看
document.defaultView
,它将正常工作。

根据建议进行了更改,但仍在以下行中出现相同错误:global.window=global.document.createWindow();
    NameTest.js
    require('../../test/setup')('<!doctype html><html><body></body></html>')
    var React          = require('react')
    var ReactAddons    = require('react/addons')
    var TestUtils = React.addons.TestUtils

describe('Name page component', function(){
    before('render element', function() {

        try {
            var renderedComponent = TestUtils.renderToString(
                <InputFieldItem />
            );
        } catch (e) {
            throw new Error(e);
        }
    });

    it('First & Last <input> fields should be of type "text"', function() {
        this.formElement = React.findDOMNode(TestUtils.findRenderedDOMComponentWithTag(renderedComponent, 'form'))
        this.firstNameElement = React.findDOMNode(TestUtils.scryRenderedDOMComponentsWithTag(renderedComponent, 'input')[0])
        this.lastNameElement = React.findDOMNode(TestUtils.scryRenderedDOMComponentsWithTag(renderedComponent, 'input')[1])

    });
});
global.document    = jsdom(markup || '')
global.window      = document.createWindow() // <-- refers to this
global.window = global.document.createWindow();