酶测试/对keyIown(shift)的反应为stopImmediatePropogation

时间:2017-11-28 19:54:56

标签: reactjs unit-testing enzyme onkeypress

我在按下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()在应用页面上点击了密钥。

1 个答案:

答案 0 :(得分:1)

如果您试图跟踪停止传播,则不能声明具有相同名称的jest.fn并跟踪它。

你需要监视这个函数,我喜欢使用SinonJS。

示例:

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

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