酶测试问题返回未定义
Posted
技术标签:
【中文标题】酶测试问题返回未定义【英文标题】:Enzyme test issues returns undefined 【发布时间】:2017-02-28 09:47:35 【问题描述】:我正在尝试使用 mount 方法对我的 React 类组件进行单元测试。当我尝试访问类变量(使用 this 关键字)时,运行测试会给出未定义的错误。下面的示例在调用 mount(<GridComponent recordArr=[1,2,3] />
后 this.DataSource 评估为 undefined
【问题讨论】:
您使用箭头函数表达式是否有原因?也许this
包含在您的匿名箭头函数表达式中。使用调试器并检查this
。尝试直接引用 recordArr 属性而不是 DataSource 私有变量。
【参考方案1】:
将this.DataSource
更改为组件状态,然后在您的测试用例中使用Enzyme util setState function:。
wrapper.setState( DataSource: 'somesource' );
例如,您的组件的 componentWillReceiveProps 方法将如下所示:
componentWillReceiveProps(nextProps)
this.setState(
DataSource: nextProps.recordArr,
);
this.parseProps()
【讨论】:
我可以将数据源存储在状态中。然而,这在 React 中被认为是一种反模式,因为建议存储在 State 中的数据只需要成为 render 方法的一部分,或者在更改时会再次重新渲染组件(请参阅***.com/questions/25207703/…)。跨度> 另外,this.DataSource 是计算 pageRecords 的辅助对象,这是我在渲染组件时使用的对象(在这种情况下,我使用的是 react-bootstrap-table 网格库)。所以有这个内部状态是可能的,但如果可能的话,更愿意避免它 明白了,在这种情况下,为什么不从DataSource计算pageRecords,然后将其设置为您的状态?作为 pageRecords 更改时的重新渲染组件实际上是您想要的(您也可以尝试在构造函数中执行此操作)以上是关于酶测试问题返回未定义的主要内容,如果未能解决你的问题,请参考以下文章