如何使用酶测试“事件”?

时间:2018-06-20 08:29:50

标签: reactjs enzyme

我有一个函数,就像这样:

  posXEvent = (e) => {
    e.persist();
    const interval = 20;
    const diff = this.textInput.offsetWidth / total_interval_count;

    let posX = e.pageX - this.textInput.offsetLeft;
     //Do something based on posX
  };

我有一个组件onclick,上面的函数称为 像<div onClick={this.posXEvent} ref={this.textInput} />

现在,我想使用酶为上述功能创建测试,但是有没有办法通过'e属性或通过假值进行测试?

1 个答案:

答案 0 :(得分:0)

是的,您应该使用笑话的jest.spyOn(object, methodName)。对于对象,传递包装器的实例。对于方法名称,您必须传递类方法的名称。

const wrapper = mount(<MyComponent />);
const eventSpy = jest.spyOn(wrapper.instance(), "posXEvent");

const eventData = { pageX: 3 };

yourElement.simulate('click', eventData);
expect(eventSpy.mock.calls).to.have.length(1);