Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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 如何在我的React组件的Jest测试中使用阵列原型?_Javascript_Reactjs_Jestjs - Fatal编程技术网

Javascript 如何在我的React组件的Jest测试中使用阵列原型?

Javascript 如何在我的React组件的Jest测试中使用阵列原型?,javascript,reactjs,jestjs,Javascript,Reactjs,Jestjs,在我的React加载程序组件上运行测试时,我遇到以下错误: TypeError: Cannot read property 'some' of undefined 或 这是我的组件 import-React{ 组成部分 }从"反应",; 从“道具类型”导入道具类型; 从“../ServiceError/ServiceError”导入ServiceError; 从“../Spinner/Spinner”导入微调器; 类加载器扩展组件{ 静态显示名称='Loader'; 静态类型={ 错误:Pr

在我的React
加载程序
组件上运行测试时,我遇到以下错误:

TypeError: Cannot read property 'some' of undefined

这是我的组件

import-React{
组成部分
}从"反应",;
从“道具类型”导入道具类型;
从“../ServiceError/ServiceError”导入ServiceError;
从“../Spinner/Spinner”导入微调器;
类加载器扩展组件{
静态显示名称='Loader';
静态类型={
错误:PropTypes.array,
已加载:PropTypes.bool.isRequired,
noData:PropTypes.object,
渲染:需要PropTypes.func.isRequired
};
获取微调器(){
常数{
加载
}=这是道具;
返回;
}
获取组件(){
常数{
加载,
野田,
提供
}=这是道具;
如果(!loaded&!this.hasError){
返回此.spinner;
}
如果(!loaded&&this.hasError){
返回此.serviceError;
}
//处理API不返回数据的场景
if(已加载&&!this.hasError&&noData){
返回此.serviceError;
}
返回render();
}
获取hasError(){
常数{
错误
}=这是道具;
返回错误.some(el=>el.show==true);
}
获取serviceError(){
常数{
野田
}=这是道具;
if(this.hasError){
返回;
}
返回;
}
render(){
返回此.component;
}
}

导出默认加载程序在某些测试中,您没有向组件提供
错误
属性,这意味着
错误
有时可能是
未定义的
。因此,您无法读取属性

您可以这样做来测试其存在性:

get hasError() {
  const {
    error
  } = this.props;

  return Array.isArray(error) && error.some(el => el.show === true);
}
否则,您可以只提供一个默认道具:

static defaultProps = {
  error: []
}

您正在传入
未定义的
或一个对象来代替
错误
static defaultProps = {
  error: []
}