| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- import '@testing-library/jest-dom'
- // Mock Taro Components
- jest.mock('@tarojs/components', () => ({
- View: 'view',
- Text: 'text',
- Input: 'input',
- ScrollView: 'scroll-view',
- Picker: 'picker',
- Image: 'image'
- }))
- // Mock Taro APIs
- jest.mock('@tarojs/taro', () => ({
- useRouter: () => ({
- params: {}
- }),
- navigateTo: jest.fn(),
- redirectTo: jest.fn(),
- switchTab: jest.fn(),
- reLaunch: jest.fn(),
- navigateBack: jest.fn(),
- showModal: jest.fn(),
- showToast: jest.fn(),
- showLoading: jest.fn(),
- hideLoading: jest.fn(),
- showActionSheet: jest.fn(),
- request: jest.fn(),
- uploadFile: jest.fn(),
- downloadFile: jest.fn(),
- connectSocket: jest.fn(),
- onSocketOpen: jest.fn(),
- onSocketError: jest.fn(),
- onSocketMessage: jest.fn(),
- onSocketClose: jest.fn(),
- sendSocketMessage: jest.fn(),
- closeSocket: jest.fn(),
- chooseImage: jest.fn(),
- previewImage: jest.fn(),
- getImageInfo: jest.fn(),
- saveImageToPhotosAlbum: jest.fn(),
- startRecord: jest.fn(),
- stopRecord: jest.fn(),
- playVoice: jest.fn(),
- pauseVoice: jest.fn(),
- stopVoice: jest.fn(),
- getBackgroundAudioPlayerState: jest.fn(),
- playBackgroundAudio: jest.fn(),
- pauseBackgroundAudio: jest.fn(),
- seekBackgroundAudio: jest.fn(),
- stopBackgroundAudio: jest.fn(),
- onBackgroundAudioPlay: jest.fn(),
- onBackgroundAudioPause: jest.fn(),
- onBackgroundAudioStop: jest.fn(),
- chooseVideo: jest.fn(),
- saveVideoToPhotosAlbum: jest.fn(),
- getLocation: jest.fn(),
- chooseLocation: jest.fn(),
- openLocation: jest.fn(),
- getSystemInfo: jest.fn(),
- getNetworkType: jest.fn(),
- onNetworkStatusChange: jest.fn(),
- onAccelerometerChange: jest.fn(),
- startAccelerometer: jest.fn(),
- stopAccelerometer: jest.fn(),
- onCompassChange: jest.fn(),
- startCompass: jest.fn(),
- stopCompass: jest.fn(),
- makePhoneCall: jest.fn(),
- scanCode: jest.fn(),
- setClipboardData: jest.fn(),
- getClipboardData: jest.fn(),
- openBluetoothAdapter: jest.fn(),
- closeBluetoothAdapter: jest.fn(),
- getBluetoothDevices: jest.fn(),
- getConnectedBluetoothDevices: jest.fn(),
- onBluetoothDeviceFound: jest.fn(),
- onBluetoothAdapterStateChange: jest.fn(),
- createBLEConnection: jest.fn(),
- closeBLEConnection: jest.fn(),
- getBLEDeviceServices: jest.fn(),
- getBLEDeviceCharacteristics: jest.fn(),
- readBLECharacteristicValue: jest.fn(),
- writeBLECharacteristicValue: jest.fn(),
- notifyBLECharacteristicValueChange: jest.fn(),
- onBLEConnectionStateChange: jest.fn(),
- onBLECharacteristicValueChange: jest.fn(),
- startBeaconDiscovery: jest.fn(),
- stopBeaconDiscovery: jest.fn(),
- getBeacons: jest.fn(),
- onBeaconUpdate: jest.fn(),
- onBeaconServiceChange: jest.fn(),
- addPhoneContact: jest.fn(),
- getHCEState: jest.fn(),
- startHCE: jest.fn(),
- stopHCE: jest.fn(),
- onHCEMessage: jest.fn(),
- sendHCEMessage: jest.fn(),
- startWifi: jest.fn(),
- stopWifi: jest.fn(),
- connectWifi: jest.fn(),
- getWifiList: jest.fn(),
- onGetWifiList: jest.fn(),
- setWifiList: jest.fn(),
- onWifiConnected: jest.fn(),
- getConnectedWifi: jest.fn(),
- showShareMenu: jest.fn(),
- hideShareMenu: jest.fn(),
- updateShareMenu: jest.fn(),
- getShareInfo: jest.fn(),
- authCode: jest.fn(),
- login: jest.fn(),
- checkSession: jest.fn(),
- authorize: jest.fn(),
- getUserInfo: jest.fn(),
- requestPayment: jest.fn(),
- showTabBarRedDot: jest.fn(),
- hideTabBarRedDot: jest.fn(),
- showTabBar: jest.fn(),
- hideTabBar: jest.fn(),
- setTabBarBadge: jest.fn(),
- removeTabBarBadge: jest.fn(),
- setTabBarItem: jest.fn(),
- setTabBarStyle: jest.fn(),
- setNavigationBarTitle: jest.fn(),
- setNavigationBarColor: jest.fn(),
- showNavigationBarLoading: jest.fn(),
- hideNavigationBarLoading: jest.fn(),
- setBackgroundColor: jest.fn(),
- setBackgroundTextStyle: jest.fn(),
- showTabBar: jest.fn(),
- hideTabBar: jest.fn(),
- setTabBarStyle: jest.fn(),
- setTabBarItem: jest.fn(),
- showTabBarRedDot: jest.fn(),
- hideTabBarRedDot: jest.fn(),
- setTabBarBadge: jest.fn(),
- removeTabBarBadge: jest.fn(),
- pageScrollTo: jest.fn(),
- startPullDownRefresh: jest.fn(),
- stopPullDownRefresh: jest.fn(),
- createSelectorQuery: jest.fn(),
- createIntersectionObserver: jest.fn(),
- getMenuButtonBoundingClientRect: jest.fn(),
- canvasToTempFilePath: jest.fn(),
- canvasPutImageData: jest.fn(),
- canvasGetImageData: jest.fn(),
- setStorage: jest.fn(),
- getStorage: jest.fn(),
- getStorageInfo: jest.fn(),
- removeStorage: jest.fn(),
- clearStorage: jest.fn(),
- setStorageSync: jest.fn(),
- getStorageSync: jest.fn(),
- getStorageInfoSync: jest.fn(),
- removeStorageSync: jest.fn(),
- clearStorageSync: jest.fn(),
- getSystemInfoSync: jest.fn(),
- getEnv: jest.fn(() => 'h5'),
- ENV_TYPE: {
- WEAPP: 'WEAPP',
- SWAN: 'SWAN',
- ALIPAY: 'ALIPAY',
- TT: 'TT',
- QQ: 'QQ',
- JD: 'JD',
- WEB: 'WEB',
- RN: 'RN',
- HARMONY: 'HARMONY'
- }
- }))
- // Mock React Query
- jest.mock('@tanstack/react-query', () => ({
- useQuery: jest.fn(() => ({
- data: null,
- isLoading: false,
- error: null
- })),
- useMutation: jest.fn(() => ({
- mutate: jest.fn(),
- isLoading: false,
- error: null
- }))
- }))
- // Mock API client
- jest.mock('../src/api', () => ({
- areaClient: {
- provinces: {
- $get: jest.fn(() => Promise.resolve({
- status: 200,
- json: () => Promise.resolve([
- { id: 1, name: '北京市', code: '110000' },
- { id: 2, name: '上海市', code: '310000' },
- { id: 3, name: '广东省', code: '440000' }
- ])
- }))
- },
- cities: {
- $get: jest.fn(() => Promise.resolve({
- status: 200,
- json: () => Promise.resolve([
- { id: 1, name: '北京市', code: '110100', provinceId: 1 },
- { id: 2, name: '上海市', code: '310100', provinceId: 2 },
- { id: 3, name: '广州市', code: '440100', provinceId: 3 },
- { id: 4, name: '深圳市', code: '440300', provinceId: 3 }
- ])
- }))
- },
- districts: {
- $get: jest.fn(() => Promise.resolve({
- status: 200,
- json: () => Promise.resolve([
- { id: 1, name: '东城区', code: '110101', cityId: 1 },
- { id: 2, name: '西城区', code: '110102', cityId: 1 },
- { id: 3, name: '天河区', code: '440106', cityId: 3 },
- { id: 4, name: '越秀区', code: '440104', cityId: 3 }
- ])
- }))
- }
- },
- locationClient: {
- $get: jest.fn(() => Promise.resolve({
- status: 200,
- json: () => Promise.resolve({
- data: [
- { id: 1, name: '北京首都国际机场', province: '北京市', city: '北京市', district: '顺义区' },
- { id: 2, name: '北京南站', province: '北京市', city: '北京市', district: '丰台区' },
- { id: 3, name: '上海虹桥机场', province: '上海市', city: '上海市', district: '长宁区' },
- { id: 4, name: '上海火车站', province: '上海市', city: '上海市', district: '静安区' }
- ]
- })
- }))
- },
- routeClient: {
- search: {
- $get: jest.fn(() => Promise.resolve({
- status: 200,
- json: () => Promise.resolve([
- {
- id: 1,
- startLocation: { name: '北京首都国际机场' },
- endLocation: { name: '上海虹桥机场' },
- activities: [
- { id: 1, name: '上海音乐节', startDate: '2025-10-20', venueLocation: { name: '上海音乐厅' } }
- ],
- routeType: 'departure'
- }
- ])
- }))
- }
- }
- }))
|