我的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;
});
但是,出于某种原因,它并不认为我的函数已被调用,即使这是模拟它的方法吗? (页面上只有一个按钮)
答案 0 :(得分:0)
这里的问题是酶将句柄搜索方法视为常量。 尝试这样的事情。它应该工作
handleSearch(e){
this.setState(prevState => ({
on: !prevState.on
}));
}
<button className="searchButton" onClick={(e) => this.handleSearch(e)}>{this.state.on ? 'Search' : null}</button>