【发布时间】:2017-01-26 21:24:54
【问题描述】:
假设我有以下应用程序:
class Child extends React.Component {
render() {
return <button onClick={this.handleChildOnClick}>{this.props.children}</button>;
}
handleChildOnClick() {
this.props.onChildClick('foo');
}
}
class Parent extends React.Component {
render() {
return <Child onChildClick={this.handleParentOnClick}>click me</Child>;
}
handleParentOnClick(text) {
this.props.onParentClick(12345);
}
}
class App extends React.Component {
render() {
return <Parent onParentClick={(num) => console.log(num)} />;
}
}
我很难找出测试Parent 组件的正确方法。 Child 和 App 不是问题,但 Parent...
我的意思是,我如何测试点击Child 组件是否会调用Parent 的点击回调,而无需:
- ...正在渲染
Child。Parent应该作为浅渲染单独测试。Child也将单独测试,如果我进行装载渲染,我基本上是在两次测试Child上的点击回调。 - ...直接在
Parent实例上调用handleParentOnClick。为此,我不应该依赖Parent的确切实现。如果我更改回调函数的名称,测试将中断,很可能是误报。
还有第三种选择吗?
【问题讨论】:
标签: unit-testing reactjs callback jestjs enzyme