0
私はサーバーリクエストを行ういくつかのReactコンポーネントのスナップショットテストを作成していますが、それらをテストする上で賢明な方法を見つけるのに問題があります。次の例を考える:レンダリングされた子要素にバインドされていないコンポーネントメソッドを起動するにはどうすればよいですか?
class FetchingComponent extends Component {
constructor(props) {
super(props);
this.state = {
serverError: null;
}
}
doServerOperation =() => {
makeServerRequest()
.then((result) => console.log('Great!'))
.catch((error) => this.onRequestFailure(error));
}
onRequestFailure = (error) => {
this.setState({serverError: error});
}
render() {
return (
<div>
<button onClick={this.doServerOperation}/>
{ this.state.serverError && <div>{this.state.serverError}</div> }
</div>
)
}
}
私はonRequestFailure
はスナップショットで期待される出力をレンダリングすることをテストしたいと思います。しかし、限り私は手動でトリガーする方法がないと言うことができるonRequestFailure
- component.toJSON()
から私に与えられたツリーは、子ボタンのonClick
属性にバインドされたdoServerOperation
をトリガーするだけです。
- レンダリングされた子にバインドされていないコンポーネントメソッドをトリガする方法はありますか?
- 子にバインドされたコンポーネント関数を模擬する方法があるので、Relayのようなものを嘲笑するという面倒を避け、代わりに
onRequestFailure
メソッドをすぐに起動させますか?