我在React Enzyme Jest单元测试中模拟拖动事件时遇到问题。 Spy永远不会被调用与 dragStart 和 dragExit 相反。工作的是基于鼠标事件和拖动当然不是 - 许多尝试以奇怪的方式模拟它,如:
wrapper.find('Draggable').simulate('mouseDown').simulate('mouseMove', {PageY: 100}).simulate('mouseUp');
...失败了,所以这是我的实际描述块:
it('should call dragStart()', () => {
wrapper.find('Draggable').simulate('mouseDown');
expect(wrapper.instance().props.dragStart).toHaveBeenCalled(); // PASS
});
it('should call dragExit()', () => {
wrapper.find('Draggable').simulate('mouseDown').simulate('mouseUp');
expect(wrapper.instance().props.dragExit).toHaveBeenCalled(); // PASS
});
it('should call dragMove()', () => {
wrapper.find('Draggable').simulate('drag');
expect(wrapper.instance().props.dragMove).toHaveBeenCalled(); // FAIL
});
如何模拟拖动?我选择了 react-draggable 依赖项。我使用酶 mount 和jest.fn()间谍道具来渲染我的包装器。请求帮助,如果您需要更多信息 - 请说! :)
PS:我知道Draggable solution with TestUtils但是我想用 Enzyme 创造相同的效果,但是我的努力结束时根本没有被称为间谍:
wrapper.find('Draggable').simulate('mouseDown', {clientX: 0, clientY: 0}).simulate('mouseMove', {clientX: 0, clientY: 100}).simulate('mouseUp');