Javascript TypeError:无法读取属性';地图';酶与摩卡的未定义反应试验

Javascript TypeError:无法读取属性';地图';酶与摩卡的未定义反应试验,javascript,reactjs,mocha.js,chai,enzyme,Javascript,Reactjs,Mocha.js,Chai,Enzyme,当我运行测试时,返回一个错误:TypeError:无法读取未定义的的属性“map” 我正在用Jest、Ezyme和mocha为我的组件编写一个组件测试。 下面是我的组件` 从“React”导入React; 从“../actions/AppActions”导入AppActions; 从“../components/MessageForm.jsx”导入MessageForm; /** * *@class留言板 * *@extends{React.Component} */ 类MessageBoa

当我运行测试时,返回一个错误:
TypeError:无法读取未定义的
的属性“map”

我正在用Jest、Ezyme和mocha为我的组件编写一个组件测试。 下面是我的组件`

从“React”导入React;
从“../actions/AppActions”导入AppActions;
从“../components/MessageForm.jsx”导入MessageForm;
/**
*
*@class留言板
* 
*@extends{React.Component}
*/
类MessageBoard扩展了React.Component{
/**
*@description创建留言板实例
* 
*@memberofmessageboard
*/
构造函数(){
超级();
此.state={
消息:“”,
组ID:“”,
};
}
/**
*@description从父组件接收道具
* 
*@param{any}nextrops
* 
*@memberofmessageboard
*/
组件将接收道具(下一步){
这是我的国家({
groupId:nextProps.groupId,
});
}
/**
*@description从商店获取消息
*@memberofmessageboard
*/
onStoreChange=()=>{
这是我的国家({
groupMessage:AppStore.getAllMessages(),
});
}
/**
*@param{any}事件
*  
*@memberofmessageboard
*/
handlePriority=(事件)=>{
这是我的国家({
优先级:event.target.value
});
}
/**
*@param{any}事件
* 
*@memberofmessageboard
*/
onChange=(事件)=>{
这是我的国家({
消息:event.target.value
});
}
/**
*@param{any}事件
*  
*@memberofmessageboard
*/
onSubmit=(事件)=>{
event.preventDefault();
const{text,type}=this.refs;
const messageDetail={
消息:this.state.message,
优先级:this.refs.type.value,
};
const groupId=this.state.groupId;
如果(组ID!=''){
AppActions.postMessage(messageDetail,groupId);
text.value='';
type.value='正常';
}
}
/**
*@memberofmessageboard
* 
*@returns{any}返回呈现的组件
*/
render(){
const messageList=this.props.groupMessage.map((groupMessage,index)=>

{groupMessage.message}

{groupMessage.time} ); 返回( 提交 正常的 紧急的 批评的 ); } }
导出默认留言板
有一件事我不明白——你在
onStoreChange
中对
groupMessage
执行
setState
,但随后从道具渲染它

如果要从道具渲染,应在
defaultProps
中为其指定默认值:

class MessageBoard extends React.Component {
  static defaultProps = {
    groupMessage: []
  }

或者,如果您打算从状态渲染它,那么您也应该在初始状态中为它设置一个默认值。

有一件事我不明白——您在
onStoreChange
中对
groupMessage
执行
设置状态
,但随后从道具渲染它

如果要从道具渲染,应在
defaultProps
中为其指定默认值:

class MessageBoard extends React.Component {
  static defaultProps = {
    groupMessage: []
  }

或者,如果您想从状态呈现它,那么您还应该在初始状态中为它提供一个默认值。

您的组件需要
groupMessage
prop:
const messageList=this.props.groupMessage.map((groupMessage,index)
,但您没有传递任何值
shall()
。因此出现错误。另外,作为建议,您可以在每次
之前使用
beforeach
并在其中装载,而不是在每个it中初始化。您的意思是我应该将它传递给
shallow()
像这样吗?传递的值是任意值。我以前做过并传递了值,但它一直抛出错误。是的。由于您没有默认的道具,也没有传递道具,
this.props.groupMessage
未定义,但应为数组。您的组件需要
groupMessage
prop:
const messageList=this.props.groupMessage.map((groupMessage,index)
,但您没有传递任何值
shall()
。因此出现错误。另外,建议您不要在每个it中初始化,而可以在每个it中使用
之前使用
,并在it中装载。您的意思是我应该将其传递给
shall())
像这样吗?传递的值是任意值。我以前做过并传递了值,但它一直抛出错误。是的。由于您没有默认的道具,也没有传递道具,
this.props.groupMessage
未定义,但应为数组。