首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jest ().simulate(‘dayClick’);TypeError不存在

jest ().simulate(‘dayClick’);TypeError不存在
EN

Stack Overflow用户
提问于 2017-01-16 11:30:42
回答 1查看 2.3K关注 0票数 0

我有一个使用'react-day-picker'的组件。

这个组件有一个名为handleDayClick的方法

代码语言:javascript
复制
handleDayClick(e, day, {disabled}) {
        if (disabled) {
            // Do not update the state if the day is disabled
            return;
        }
        this.setState({ selectedDay: day });
        this.props.dateClick(day);
    };

然后将其传递给as onDayClick支柱:

代码语言:javascript
复制
<DayPicker
   onDayClick={ this.handleDayClick.bind(this) }
   selectedDays={ day => DateUtils.isSameDay(day, this.state.selectedDay) }
   disabledDays={ isWeekend }
 />

现在,我想编写一个模拟日期上的单击事件的测试,看看它是否触发了正确的方法:

代码语言:javascript
复制
it('DayPicker should call handleDayClick on click', () => {
    const sidebar = mount(<Sidebar />);
    let spy = sinon.spy(sidebar.instance(), 'handleDayClick');
    sidebar.update();
    sidebar.find(DayPicker).simulate('dayClick');
    expect(spy.called).toBe(true);
  });

这方面的问题是,.simulate()不承认'dayClick'。我在控制台中得到以下错误:

TypeError: ReactWrapper::simulate()事件'dayClick‘不存在

如果我尝试模拟'click',间谍将返回false (因此该方法永远不会被调用)。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-16 12:44:48

模拟只支持反应明白的事件

(https://facebook.github.io/react/docs/test-utils.html#simulate)

这就是为什么在dayClick上出现错误的原因。

为了模拟点击,您应该深入到反作用日选择器中,并找出最终分配给哪个DOM元素的onClick道具。然后模拟点击。

编辑--这是包含获取单击处理程序的DOM节点的组件。

https://github.com/gpbl/react-day-picker/blob/master/src/Day.js

您应该在<div>组件中模拟测试。

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

https://stackoverflow.com/questions/41675414

复制
相关文章

相似问题

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