需要enzyme
的帮助才能进行测试。我在这里查了一下,但没有帮助:How does one access state on a nested React component wrapped by an HOC?
这是我的问题:
如何检查被调用的函数和子组件的状态?我还需要检查生命周期,所以我使用了父组件的mount,但尚未完成。
我在render
编辑一个组件时使用了以下内容:
expect(searchWrapper.find('select [selected]').val()).to.equal('someId')
,
但是mount
,这不起作用,因为它抱怨searchWrapper.find(...).val
不是我认为是欢呼IO的功能,它只与render
一起使用。那对我来说什么是正确的方式呢?
我打算做什么:在孩子选择更改时,检查(和/或匹配):
componentWillReceiveProps
和componentDidMount
等组件就像
class ParentWrapper {
// state and other functions and lifecycle methods
render(){
....
<SearchWrapper {...props}/>
<ResultWrapper {...props}/>
}
}
class SearchWrapper {
// state
// lifecycle methods
// functions
}
和ResultWrapper
相同。
使用一些代码再次总结一下: 我想访问Child节点的状态和其他对象,就像我们可以使用root一样。例如,还可以从选择菜单访问所选对象等渲染对象。
// state is not a function, as it has to be called for root only, then whats the alternative
expect(parentWrapper.find(SearchWrapper).state().searchId).to.equal('someValue');
// Below also did not work, it worked when I tested SearchWrapper individually using render()
// which is a CheerIO function, but I need to use mount of parent for whole component testing
// and inter-component interactions
searchWrapper.find('.form1 select').simulate('change', {target : {value : 'someValue'}});
// sinon spy on change is triggered
expect(searchWrapper.render().find('select [selected]').val()).to.equal('someValue');
// AssertionError: expected undefined to equal 'someValue'