首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用酶来窥探react事件监听器?

如何使用酶来窥探react事件监听器?
EN

Stack Overflow用户
提问于 2018-05-31 07:06:49
回答 2查看 1.9K关注 0票数 0

这似乎是一个相当简单的任务,但我不知道我做错了什么……

Page.jsx

代码语言:javascript
复制
class Page extends React.Component {
  constructor(props) {
    super(props);
  }

  handlePageClick = (e) => {
    console.log('page click!!');
  }

  render() {
    return(
      <div className='at-page' onClick={this.handlePageClick}>
        {this.props.children}
      </div>
    );
  }
}

export default Page;

Page.test.js

代码语言:javascript
复制
...
it('page should listen for click events', () => {
  const wrapper = mount(<Page><div>Hello Page</div></Page>);
  const instance = wrapper.instance();
  const spy = jest.spyOn(instance, 'handlePageClick');

  const page = wrapper.find('.at-page');
  page.prop('onClick')();

  expect(spy).toHaveBeenCalled();
}
...

我要..。

expect(jest.fn()).toHaveBeenCalled() Expected mock function to have been called.

EN

回答 2

Stack Overflow用户

发布于 2018-05-31 08:26:40

我发现这里出了什么问题。如果你有更好的解决方案,请告诉我。

1)我应该在创建包装器之前侦测我的函数

2)我不能在我的类中使用箭头函数作为方法

Page.jsx

代码语言:javascript
复制
class Page extends React.Component {
  constructor(props) {
    super(props);

    this.handlePageClick = this.handlePageClick.bind(this);
  }

  handlePageClick(e) {
    console.log('page click!!');
  }

  render() {
    return(
      <div className='at-page' onClick={this.handlePageClick}>
        {this.props.children}
      </div>
    );
  }
}

export default Page;

Page.test.js

代码语言:javascript
复制
...
it('page should listen for click events', () => {
  const spy = jest.spyOn(Page.prototype, 'handlePageClick');
  const wrapper = mount(<Page><div>Hello Page</div></Page>);
  const page = wrapper.find('.at-page');

  page.prop('onClick')();

  expect(spy).toHaveBeenCalled();
}
...
票数 0
EN

Stack Overflow用户

发布于 2018-06-16 18:10:29

使用Simon库和方法存根

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50614481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档