Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Reactjs:TypeError:无法读取属性';道具类型';未定义的_Javascript_Unit Testing_Reactjs - Fatal编程技术网

Javascript Reactjs:TypeError:无法读取属性';道具类型';未定义的

Javascript Reactjs:TypeError:无法读取属性';道具类型';未定义的,javascript,unit-testing,reactjs,Javascript,Unit Testing,Reactjs,请让我为下面的页面写一个单元测试 export default class Collapsible extends React.Component { static propTypes = { title: React.PropTypes.string, children: React.PropTypes.any, }; render() { const { title } = this.props; re

请让我为下面的页面写一个单元测试

export default class Collapsible extends React.Component {
    static propTypes = {
        title: React.PropTypes.string,
        children: React.PropTypes.any,
    };

    render() {
        const { title } = this.props;
        return (
            <details>
                <summary>{title}</summary>
                {this.props.children}
            </details>
        );
    }
}
export默认类可折叠扩展React.Component{
静态类型={
标题:React.PropTypes.string,
儿童:React.PropTypes.any,
};
render(){
const{title}=this.props;
返回(
{title}
{this.props.children}
);
}
}
在图坦卡蒙之后,我在下面写下了我的测试

describe('Collapsible', ()=>{
    it('works', ()=>{
        let renderer = createRenderer();
        renderer.render(<Collapsible title="MyTitle"><span>HEllo</span></Collapsible>);
        let actualElement = renderer.getRenderOutput();
        let expectedElement = (<details><summary>title</summary>Details</details>);
        expect(actualElement).toEqual(expectedElement);                     
    });
});
description('可折叠',()=>{
它('有效',()=>{
让renderer=createRenderer();
render.render(HEllo);
让actualElement=renderer.getRenderRoutPut();
设expectedElement=(标题细节);
expect(实际元素)。toEqual(预期元素);
});
});
然而,我的测试在上面的标题中抛出了错误,我怀疑我在可折叠上的道具(即标题和子项)没有从测试中分配。请问我该如何处理这个问题?任何帮助或指导都将不胜感激。

根据,使用ES6类定义道具的一种方法如下:

export default class Collapsible extends React.Component {
    render() {
        const { title } = this.props;
        return (
            <details>
                <summary>{title}</summary>
                {this.props.children}
            </details>
        );
    }
}

Collapsible.propTypes = {
    title: React.PropTypes.string,
    children: React.PropTypes.any,
};
export默认类可折叠扩展React.Component{
render(){
const{title}=this.props;
返回(
{title}
{this.props.children}
);
}
}
可折叠的.propTypes={
标题:React.PropTypes.string,
儿童:React.PropTypes.any,
};

感谢您抽出宝贵的时间。结果是我错误地将可折叠文件导入到测试文件中。下面是我以前是如何导入的

import React from 'react';
import expect from 'expect';
import {createRenderer} from 'react-addons-test-utils';
import { Collapsible }  from '../Collapsible.js';
改为

import React from 'react';
import expect from 'expect';
import {createRenderer} from 'react-addons-test-utils';
import Collapsible  from '../Collapsible';

它似乎起作用了。以前我将可折叠文件作为现有变量/对象导入。在阅读了文档和一些教程之后,我意识到

谢谢你的回复。我们使用该组件,工作正常。我在实现上面的unitTest时遇到了问题。我怀疑错误在于我在上面的uniTest文件中传递道具的方式。但是,我不知道在哪里以及如何解决这个问题。在我的例子中,情况正好相反——我添加了redux的
connect()
方法,并以不同的名称导出。忘了在测试中更改它。