Я ищу хорошее решение для правильного теста, чего я хочу добиться - это добавить перетаскиваемый элемент (компонент 1) в dropzone (компонент 2), я надеюсь, что это возможно сделать с двумя компонентами из других файлов. ,
Я использую для модульного тестирования:
- фермент
- Шутка
- реагируют-ДНА
- реагирует-ДНО испытаний * +1010 утилиты *
- реагируют-ДНА-тест-бэкенд
function setupTargetElement(props) {
const TargetContext = wrapInTestContext(TargetComponent)
return mount(<TargetContext {...props}/>)
}
function setupDragElement(props) {
const DragContext = wrapInTestContext(DragComponent)
return mount(<DragContext {...props}/>)
}
describe("Shoud drop element", () => {
let targetElement
let dragElement
const mockDragElement = () => {
return (
<li key={drag.id} className="item" >
Drag Elemnt
</li>
)
}
beforeEach(() => {
targetElement = setupTargetElement({
canDrop: true
})
dragElement = setupDragElement({
connectDragSource: mockDragElement()
})
})
it('Should drop employee block', () => {
const dragManager = dragElement.instance().getManager()
const dragBackend = createBackend(dragManager)
const targetManager = targetElement.instance().getManager()
const targetBackend = createBackend(targetManager)
let dragModule = dragElement.find(DragComponent)
let targetModule = targetElement.find(TargetComponent)
const dragSourceId = dragModule.instance().getHandlerId()
const targetId = targetModule.instance().getHandlerId()
dragBackend.simulateBeginDrag([dragSourceId], {})
dragBackend.simulateHover([targetId], {})
targetElement.update()
targetModule = targetElement.find(TargetComponent)
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
Я получаю ошибку в этой dragBackend.simulateHover([targetId], {})
строке:
Ожидаемые целевые идентификаторы для регистрации.
Есть идеи?