我正在努力使用react-dnd. 这涉及将一项从一个组件拖放到另一组件中。从功能上讲,它工作得很好,但我在测试“drop”以便触发该功能时遇到了麻烦。当我测试时,我根本无法让它记录我正在掉落。
一些相关信息:
“删除”组件代码
const TableBody = React.forwardRef(({ <props> }: Props, ref) => {
const [{ isOver }, drop] = useDrop({
accept: 'TestItem',
drop: (droppedItem: any) => dropFunction(droppedItem),
collect: monitor => ({
isOver: monitor.isOver(),
}),
});
...
return (
<MaterialTableBody ref={ref} role='rowgroup'>
{ <code to render rows }
</MaterialTableBody>
);
});
Run Code Online (Sandbox Code Playgroud)
测试示例
test('Dropping on a table triggers the drop function', () => {
const mockDropFunction = jest.fn();
const NewContext = wrapInTestContext(TableBody);
render(
<NewContext <props> dropFunction={mockDropFunction} />
);
const tables = screen.getAllByRole('rowgroup');
const table = tables[0];
const mockDroppedItem = { id: 'test', type: 'TestItem' };
fireEvent.drop(table, {
dataTransfer: mockDroppedItem,
});
expect(mockDropFunction).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)
我尝试了一些不同的迭代,例如为每个步骤触发一个事件(dragStart、dragEnter、dragOver、drop),以及其他一些事情。但我什至无法让任何事情发生。模拟功能组件中“删除”某些内容的最佳方法是什么?
小智 0
问题出在放置事件的目标元素上:
fireEvent.dragStart(dragElem);
fireEvent.dragOver(dropElement);
fireEvent.drop(dropElement); // <-- element here should be the drop container
fireEvent.dragEnd(dragElem);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1705 次 |
| 最近记录: |