Răsfoiți Sursa

✅ test(taro): add missing taro mocks and update pay success page tests

- add mockSwitchTab and mockUseLoad to taroMock.ts
- update PaySuccessPage tests to use switchTab instead of navigateTo
- remove unnecessary navigateBack mock from tests
- fix order page navigation URL in tests
yourname 3 luni în urmă
părinte
comite
b4ca366bd1

+ 6 - 0
mini/tests/__mocks__/taroMock.ts

@@ -8,12 +8,14 @@ export const mockShowToast = jest.fn()
 export const mockShowLoading = jest.fn()
 export const mockHideLoading = jest.fn()
 export const mockNavigateTo = jest.fn()
+export const mockSwitchTab = jest.fn()
 export const mockShowModal = jest.fn()
 export const mockReLaunch = jest.fn()
 export const mockOpenCustomerServiceChat = jest.fn()
 export const mockUseRouter = jest.fn()
 export const mockRequestPayment = jest.fn()
 export const mockGetEnv = jest.fn()
+export const mockUseLoad = jest.fn()
 
 // 环境类型常量
 export const ENV_TYPE = {
@@ -39,8 +41,10 @@ export default {
   // 导航相关
   navigateTo: mockNavigateTo,
   navigateBack: jest.fn(),
+  switchTab: mockSwitchTab,
   reLaunch: mockReLaunch,
   useRouter: () => mockUseRouter(),
+  useLoad: (callback: any) => mockUseLoad(callback),
 
   // 微信相关
   openCustomerServiceChat: mockOpenCustomerServiceChat,
@@ -71,8 +75,10 @@ export {
   mockHideLoading as hideLoading,
   mockShowModal as showModal,
   mockNavigateTo as navigateTo,
+  mockSwitchTab as switchTab,
   mockReLaunch as reLaunch,
   mockUseRouter as useRouter,
+  mockUseLoad as useLoad,
   mockOpenCustomerServiceChat as openCustomerServiceChat,
   mockRequestPayment as requestPayment,
   mockGetEnv as getEnv

+ 7 - 27
mini/tests/unit/pay-success-page.test.tsx

@@ -6,17 +6,7 @@ import React from 'react'
 import { render, screen, fireEvent } from '@testing-library/react'
 import '@testing-library/jest-dom'
 import PaySuccessPage from '@/pages/pay-success/index'
-
-// Mock Taro相关API
-const mockNavigateTo = jest.fn()
-const mockUseRouter = jest.fn()
-const mockUseLoad = jest.fn()
-
-jest.mock('@tarojs/taro', () => ({
-  useRouter: () => mockUseRouter(),
-  navigateTo: mockNavigateTo,
-  useLoad: (callback: any) => mockUseLoad(callback)
-}))
+import { mockSwitchTab, mockUseRouter, mockUseLoad } from '../__mocks__/taroMock'
 
 describe('PaySuccessPage', () => {
   beforeEach(() => {
@@ -32,7 +22,7 @@ describe('PaySuccessPage', () => {
       if (callback) callback()
     })
 
-    mockNavigateTo.mockClear()
+    mockSwitchTab.mockClear()
   })
 
   it('should render payment success page correctly', () => {
@@ -50,8 +40,8 @@ describe('PaySuccessPage', () => {
     const viewOrderButton = screen.getByText('查看订单')
     fireEvent.click(viewOrderButton)
 
-    expect(mockNavigateTo).toHaveBeenCalledWith({
-      url: '/pages/orders/orders'
+    expect(mockSwitchTab).toHaveBeenCalledWith({
+      url: '/pages/orders/index'
     })
   })
 
@@ -61,7 +51,7 @@ describe('PaySuccessPage', () => {
     const backToHomeButton = screen.getByText('返回首页')
     fireEvent.click(backToHomeButton)
 
-    expect(mockNavigateTo).toHaveBeenCalledWith({
+    expect(mockSwitchTab).toHaveBeenCalledWith({
       url: '/pages/home/index'
     })
   })
@@ -117,17 +107,7 @@ describe('PaySuccessPage', () => {
   })
 
   it('should handle navigation back', () => {
-    const mockNavigateBack = jest.fn()
-    jest.doMock('@tarojs/taro', () => ({
-      useRouter: () => mockUseRouter(),
-      navigateTo: mockNavigateTo,
-      useLoad: (callback: any) => mockUseLoad(callback),
-      navigateBack: mockNavigateBack
-    }))
-
-    render(<PaySuccessPage />)
-
-    // 这里需要模拟导航栏返回按钮的点击
-    // 由于组件结构,可能需要通过不同的方式触发
+    // 这个测试目前没有实际功能,因为组件中没有使用 navigateBack
+    // 如果需要测试导航返回功能,需要先实现对应的组件逻辑
   })
 })