| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /**
- * 支付成功页面组件测试
- */
- import { render, screen, fireEvent } from '@testing-library/react'
- import '@testing-library/jest-dom'
- import PaySuccessPage from '@/pages/pay-success/index'
- import { mockSwitchTab, mockUseRouter, mockUseLoad } from '../__mocks__/taroMock'
- describe('PaySuccessPage', () => {
- beforeEach(() => {
- mockUseRouter.mockReturnValue({
- params: {
- totalPrice: '100',
- passengerCount: '2',
- orderId: '123'
- }
- })
- mockUseLoad.mockImplementation((callback) => {
- if (callback) callback()
- })
- mockSwitchTab.mockClear()
- })
- it('应该正确渲染支付成功页面', () => {
- render(<PaySuccessPage />)
- expect(screen.getByText('支付成功!')).toBeInTheDocument()
- expect(screen.getByText('感谢您的信任与支持')).toBeInTheDocument()
- expect(screen.getByText('¥100')).toBeInTheDocument()
- expect(screen.getByText('2张')).toBeInTheDocument()
- })
- it('应该处理查看订单按钮点击', () => {
- render(<PaySuccessPage />)
- const viewOrderButton = screen.getByText('查看订单')
- fireEvent.click(viewOrderButton)
- expect(mockSwitchTab).toHaveBeenCalledWith({
- url: '/pages/orders/index'
- })
- })
- it('应该处理返回首页按钮点击', () => {
- render(<PaySuccessPage />)
- const backToHomeButton = screen.getByText('返回首页')
- fireEvent.click(backToHomeButton)
- expect(mockSwitchTab).toHaveBeenCalledWith({
- url: '/pages/home/index'
- })
- })
- it('应该优雅处理缺少参数的情况', () => {
- mockUseRouter.mockReturnValue({
- params: {} // 缺少参数
- })
- render(<PaySuccessPage />)
- // 应该使用默认值渲染
- expect(screen.getByText('¥0')).toBeInTheDocument()
- expect(screen.getByText('0张')).toBeInTheDocument()
- })
- it('应该在加载时记录订单ID', () => {
- const consoleSpy = jest.spyOn(console, 'log')
- render(<PaySuccessPage />)
- expect(consoleSpy).toHaveBeenCalledWith('支付成功页面加载,订单ID:', '123')
- consoleSpy.mockRestore()
- })
- it('应该显示正确的支付信息', () => {
- mockUseRouter.mockReturnValue({
- params: {
- totalPrice: '250.5',
- passengerCount: '3',
- orderId: '456'
- }
- })
- render(<PaySuccessPage />)
- expect(screen.getByText('¥250.5')).toBeInTheDocument()
- expect(screen.getByText('3张')).toBeInTheDocument()
- })
- it('应该具有正确的导航结构', () => {
- render(<PaySuccessPage />)
- // 检查导航栏
- expect(screen.getByText('支付成功')).toBeInTheDocument()
- // 检查按钮布局
- const buttons = screen.getAllByRole('button')
- expect(buttons).toHaveLength(2)
- expect(screen.getByText('返回首页')).toBeInTheDocument()
- expect(screen.getByText('查看订单')).toBeInTheDocument()
- })
- it('应该处理导航返回', () => {
- // 这个测试目前没有实际功能,因为组件中没有使用 navigateBack
- // 如果需要测试导航返回功能,需要先实现对应的组件逻辑
- })
- })
|