如何触发未绑定到渲染子元素的组件方法?

时间:2016-09-27 09:42:39

标签: reactjs jestjs

我正在为一些提出服务器请求的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()给我的树只允许我触发doServerOperation,它绑定到子按钮的onClick属性。

  • 有没有办法触发未绑定到任何渲染子组件的组件方法?
  • 有没有办法模拟绑定到子节点的组件函数,这样我就可以避免像Relay这样嘲笑的麻烦,而是让它立即触发我的onRequestFailure方法?

1 个答案:

答案 0 :(得分:0)

看起来我缺少的技巧是在getInstance()创建的组件上使用renderer.create()