您正在组件包装器上模拟keyup事件,但将keyup事件侦听器添加到文档对象。这个
Common Gothcas
部分提到了一些关于事件传播的事情,这些事情并没有如您所期望的那样工作。
我唯一能想到的办法就是监视
document.addEventListener
并手动调用测试文件中的处理程序。
it('check handleKeyPress with keyup', () => {
// save keyup event handler added to document
let keyUpHandler;
document.addEventListener = jest.fn((event, handler) => {
if (event === 'keyup') {
keyUpHandler = handler;
}
});
// render component
wrapper = shallow(...);
let instance = wrapper.instance()
let handleKeyPress = jest.spyOn(instance, 'handleKeyPress')
// call the keyup handler with the event data
keyUpHandler({ keyCode: 38 })
expect(handleKeyPress).toHaveBeenCalled()
})