我正在使用酶來測試一個 React 組件,該組件將另一個組件作為 prop 傳遞。我需要在 prop 組件中測試事件處理程序,但在使用 Enzyme 時遇到問題。我嘗試模擬事件并手動.click()'ing。我正在使用Jest作為主要的測試框架。此外,無法找到道具組件。wrapper.find('MenuItem')主組件.js<MainComponent> <Dropdown overlay={ <Menu > {menuItems.map((item, i) => <Menu.Item key={i} onClick={() => handleClick(item)}>{item}</Menu.Item>)} <Menu.Divider /> <Menu.Item/> </Menu>} /></MainComponent>MainComponent.test.jsconst mockHandleClick = jest.fn()const wrapper = shallow(<MainComponent handleClick={mockHandleClick} menuItems=['tag'] />)const dropdown = wrapper.find('Dropdown')const menu = dropdown.prop('overlay')const menuItem = menu.props.children[0][0] // the map is stored as an array in childrenexpect(menuItem.props.children).toEqual('tag') // passes// None of these work// menuItem.simulate('click')// menuItem.click()// menuItem.dispatchEvent('click')expect(mockHandleClick).toHaveBeenCalledTimes(1)mockHandleClick.mockClear()我想我可能對檢索到的元素和通過 檢索的元素之間的區(qū)別有根本的誤解。.find().props()
酶 - 在作為道具傳遞的元素中激發(fā)事件
呼喚遠方
2022-08-04 16:04:17