import React from 'react' import { render, screen, fireEvent } from '@testing-library/react' import '@testing-library/jest-dom' import { MenuItem } from '../../src/components/MenuItem' describe('MenuItem', () => { const mockProps = { title: '修改个人信息', icon: 'i-heroicons-user-20-solid', bgColor: 'bg-blue-100', iconColor: 'text-blue-500', onPress: jest.fn() } beforeEach(() => { jest.clearAllMocks() }) it('应该渲染菜单项标题', () => { render() expect(screen.getByText('修改个人信息')).toBeInTheDocument() }) it('应该渲染图标', () => { const { container } = render() const icon = container.querySelector('.i-heroicons-user-20-solid') expect(icon).toBeInTheDocument() }) it('应该应用正确的背景颜色类', () => { const { container } = render() const bgElement = container.querySelector('.bg-blue-100') expect(bgElement).toBeInTheDocument() }) it('应该渲染右箭头', () => { const { container } = render() const arrow = container.querySelector('.i-heroicons-chevron-right-20-solid') expect(arrow).toBeInTheDocument() }) it('点击时应该调用onPress', () => { render() const menuItem = screen.getByText('修改个人信息').closest('.flex') if (menuItem) { fireEvent.click(menuItem) } expect(mockProps.onPress).toHaveBeenCalledTimes(1) }) it('应该使用不同的图标颜色', () => { const greenProps = { ...mockProps, bgColor: 'bg-green-100', iconColor: 'text-green-500' } const { container } = render() const greenElement = container.querySelector('.text-green-500') expect(greenElement).toBeInTheDocument() }) })