2016-09-27 7 views
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メソッドをすぐに起動させますか?

答えて

0

renderer.create()によって作成されたコンポーネントにgetInstance()を使用することが欠けていたようです。

関連する問題