javascript - enzyme 测试问题返回未定义

标签 javascript unit-testing reactjs enzyme

我正在尝试使用{mount}方法对我的React类组件进行单元测试。当我尝试访问类变量(使用此关键字)时,运行测试给出未定义的错误。下面的示例在调用mount(<GridComponent recordArr=[1,2,3] />后this.DataSource的值为undefined

导出类GridComponent扩展了React.Component {
构造函数( Prop ){
super ( Prop )

this.state = {
pageRecords:[],
totalSize:0
}
this.options = {
页数:1
sizePerPage:10
}
this.DataSource = [] //所有记录都将存储在这里
}

componentDidMount(){
this.DataSource = this.props.recordArr
this.parseProps()
}

componentWillReceiveProps(nextProps){
this.DataSource = nextProps.recordArr
this.parseProps()
}

parseProps =()=> {
让pageRecords = []
如果(!_。isEmpty(this.DataSource)){//this.DataSource ==>未定义
让startIndex =(this.options.page-1)* this.options.sizePerPage
让计数=(this.options.page-1)* this.options.sizePerPage + this.options.sizePerPage
pageRecords = _.slice(this.DataSource,startIndex,count)
}
this.setState({
...这个状态
pageRecords:pageRecords,
totalSize:this.DataSource.length
})
}

render(){
... //从this.state.pageRecords呈现记录
}
}

最佳答案

this.DataSource更改为组件状态,然后在测试用例中使用Enzyme util setState function:

wrapper.setState({ DataSource: 'somesource' });

例如,您组件的componentWillReceiveProps方法将如下所示:
componentWillReceiveProps(nextProps) {
  this.setState({
    DataSource: nextProps.recordArr,
  });
  this.parseProps()
}

关于javascript - enzyme 测试问题返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119774/

相关文章:

javascript - typescript 介意对象文字中实例化的顺序吗?

javascript - 套索和 D3.js

javascript - 如何将 Route 匹配到除基本(主)路径之外的任何路径?

javascript - 在AngularJS中循环遍历多个数组及其内部的对象

c - Valgrind 使用 g_test_trap_subprocess () 给出可能丢失的内存

java - 我自己的 android 库的单元测试框架

python - Flask 单元测试并且不理解我对 "TypeError: a bytes-like object is required, not ' str' 的修复"

reactjs - 鼠标悬停时打开菜单和鼠标离开时关闭菜单 react

javascript - 节流函数(受 lodash 启发)仅使用 React Hook (使用 Sandbox)来处理调整大小事件

javascript - 如何从状态 url 路由中删除感叹号 Mean full stack