酶测试/反应 keyDown (shift) stopImmediatePropogation

enzyme test / react for keyDown (shift) for stopImmediatePropogation

我正在尝试在按下 KeyDown 事件 - Shift 时测试 stopImmediatePropogation()。

enter// wrapper.simulate('keypress', { key: 'Shift' });
wrapper.simulate('keydown', { keyCode: 16 });
const stopPropogation = jest.fn();
expect(stopPropogation).toHaveBeenCalledTimes(0);

wrapper.find('.className').simulate('keyDown', { key: 'Shift' });


// const event = new KeyboardEvent('keydown', { keyCode: 16 });
// // const dispatchStopProp = jest.fn();
// document.dispatchEvent(event);
// // expect(dispatchStopProp).toHaveBeenCalledTimes(1);
// const result = wrapper.dive().instance().stopPropogation();
// expect(result).toEqual(1);

// const onKeyDown = sinon.spy();
// const wrapper = mount(<TestComponent onkeydown={onkeydown}/>);
// const input = wrapper.find('input');
// input.simulate('keyDown', { keyCode: 16 });
// expect(onKeyDown.called).to.be.true; code here

None 我的方法似乎行得通。任何建议都会有所帮助。

单元测试的动机:

在应用程序页面上单击键盘 "shift" 键时调用 stopPropogation()。

如果您试图跟踪您的 stopPropagation,您不能只声明一个具有相同名称的 jest.fn 并跟踪它。

需要窥探功能,我喜欢用SinonJS

示例:

var spy = sinon.spy(MyComponent.prototype, 'stopPropagation');
// Do something that invokes MyComponent.stopPropagation

expect(spy.calledOnce).to.be.true;