我在按下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
我的方式似乎都没有用。任何建议都会有所帮助。
单元测试的动机:
当键盘&#34; shift&#34;时调用stopPropogation()在应用页面上点击了密钥。
答案 0 :(得分:1)
如果您试图跟踪停止传播,则不能声明具有相同名称的jest.fn并跟踪它。
你需要监视这个函数,我喜欢使用SinonJS。
示例:
var spy = sinon.spy(MyComponent.prototype, 'stopPropagation');
// Do something that invokes MyComponent.stopPropagation
expect(spy.calledOnce).to.be.true;