模拟酶中的onClick事件

时间:2017-03-07 11:33:07

标签: javascript reactjs enzyme

我的Search组件渲染方法中包含此代码:

   <button className="searchButton" onClick={this.handleSearch}>{this.state.on ? 'Search' : null}</button>

然后我有了这个:

  handleSearch = (e) => {
    this.setState(prevState => ({
      on: !prevState.on
    }));
  }

当我点击按钮时,这肯定会被调用。然而,我的测试并不是模拟它,即使我觉得我正在以正确的方式做到这一点。

it.only('calls handleSearch', () => {
  searchButton = renderedOutput.find('button').at(0);
  searchButton.simulate('click');
  expect(handleSearchStub).to.have.been.called;
});

但是,出于某种原因,它并不认为我的函数已被调用,即使这是模拟它的方法吗? (页面上只有一个按钮)

1 个答案:

答案 0 :(得分:0)

这里的问题是酶将句柄搜索方法视为常量。 尝试这样的事情。它应该工作

handleSearch(e){
    this.setState(prevState => ({
      on: !prevState.on
    }));
  }

 <button className="searchButton" onClick={(e) => this.handleSearch(e)}>{this.state.on ? 'Search' : null}</button>