import React from 'react' import { render, screen, fireEvent } from '@testing-library/react' import '@testing-library/jest-dom' import { LogoutButton } from '../../src/components/LogoutButton' describe('LogoutButton', () => { const mockOnPress = jest.fn() beforeEach(() => { jest.clearAllMocks() }) it('应该渲染退出登录文本', () => { render() expect(screen.getByText('退出登录')).toBeInTheDocument() }) it('应该渲染退出图标', () => { const { container } = render() const icon = container.querySelector('.i-heroicons-arrow-right-on-rectangle-20-solid') expect(icon).toBeInTheDocument() }) it('应该应用红色背景样式', () => { const { container } = render() const bgElement = container.querySelector('.bg-red-100') expect(bgElement).toBeInTheDocument() }) it('点击时应该调用onPress', () => { render() const button = screen.getByText('退出登录').closest('.flex') if (button) { fireEvent.click(button) } expect(mockOnPress).toHaveBeenCalledTimes(1) }) it('正在退出时应该显示"退出中..."', () => { render() expect(screen.getByText('退出中...')).toBeInTheDocument() }) it('正常状态应该显示"退出登录"', () => { render() expect(screen.getByText('退出登录')).toBeInTheDocument() }) })