Jest和Enzyme用于模拟反应单元测试的onDrag事件

时间:2018-01-11 21:22:49

标签: reactjs unit-testing drag-and-drop jestjs enzyme

我在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');

0 个答案:

没有答案