import { fireEvent, render, screen } from '@testing-library/react'; import { VirtualTreeViewport } from './VirtualTreeViewport'; describe('VirtualTreeViewport', () => { it('只渲染可视窗口并在滚动后更新行', () => { const items = Array.from({ length: 1000 }, (_, id) => ({ id, label: `节点 ${id}` })); render( item.id} renderRow={(item) =>
{item.label}
} />, ); const tree = screen.getByRole('tree', { name: '大型树' }); expect(screen.getByText('节点 0')).toBeVisible(); expect(screen.queryByText('节点 500')).not.toBeInTheDocument(); Object.defineProperty(tree, 'scrollTop', { configurable: true, value: 10000 }); fireEvent.scroll(tree); expect(screen.getByText('节点 500')).toBeVisible(); fireEvent.keyDown(tree, { key: 'ArrowDown' }); expect(tree.getAttribute('aria-activedescendant')).toContain('501'); }); });