import { fireEvent, render, screen } from '@testing-library/react'; import { SimulationControls } from './SimulationControls'; describe('SimulationControls', () => { it('迁移后保留播放、单步、重置、速度及就绪限制', () => { const pause = vi.fn(), step = vi.fn(), reset = vi.fn(), speed = vi.fn(); const props = { ready: true, paused: true, loading: false, speed: 1, onTogglePause: pause, onStep: step, onReset: reset, onSpeed: speed, }; const { rerender } = render(); fireEvent.click(screen.getByRole('button', { name: '▶ 播放' })); fireEvent.click(screen.getByRole('button', { name: '单步' })); fireEvent.click(screen.getByRole('button', { name: '重置' })); fireEvent.change(screen.getByLabelText('仿真速度'), { target: { value: '2' } }); expect(pause).toHaveBeenCalledOnce(); expect(step).toHaveBeenCalledOnce(); expect(reset).toHaveBeenCalledOnce(); expect(speed).toHaveBeenCalledWith(2); rerender(); expect(screen.getByRole('button', { name: '⏸ 暂停' })).toBeEnabled(); expect(screen.getByRole('button', { name: '单步' })).toBeDisabled(); rerender(); expect(screen.getByRole('button', { name: '▶ 播放' })).toBeDisabled(); expect(screen.getByRole('button', { name: '重置' })).toBeDisabled(); }); });