setup.js 1.69 KB
/**
 * Vitest 测试环境设置
 */

import { vi } from 'vitest'
import { config } from '@vue/test-utils'

// 全局 Mock
config.global.mocks = {
  $t: key => key, // i18n Mock
  $router: {
    push: vi.fn(),
    replace: vi.fn(),
  },
}

// Mock localStorage
const localStorageMock = {
  getItem: vi.fn(),
  setItem: vi.fn(),
  removeItem: vi.fn(),
  clear: vi.fn(),
}
global.localStorage = localStorageMock

// Mock Taro API
global.Taro = {
  getStorage: vi.fn(),
  setStorage: vi.fn(),
  removeStorage: vi.fn(),
  getStorageSync: vi.fn(() => ''),
  setStorageSync: vi.fn(),
  removeStorageSync: vi.fn(),
  navigateTo: vi.fn(),
  redirectTo: vi.fn(),
  switchTab: vi.fn(),
  navigateBack: vi.fn(),
  showToast: vi.fn(),
  showLoading: vi.fn(),
  hideLoading: vi.fn(),
  showModal: vi.fn(),
  showActionSheet: vi.fn(),
  createSelectorQuery: vi.fn(() => ({
    select: vi.fn().mockReturnThis(),
    exec: vi.fn(callback => callback([])),
  })),
  request: vi.fn(),
  getLocation: vi.fn(),
  chooseImage: vi.fn(),
  previewImage: vi.fn(),
  uploadFile: vi.fn(),
  downloadFile: vi.fn(),
  login: vi.fn(),
  getUserInfo: vi.fn(),
  openSetting: vi.fn(),
  getSystemInfo: vi.fn(),
  getSystemInfoSync: vi.fn(() => ({
    model: 'iPhone',
    system: 'iOS 14.0',
    platform: 'ios',
  })),
}

// Mock wx API
global.wx = {
  getStorageSync: vi.fn(() => ''),
  setStorageSync: vi.fn(),
  removeStorageSync: vi.fn(),
  request: vi.fn(),
  login: vi.fn(),
  getUserInfo: vi.fn(),
}

// Mock axios
vi.mock('axios-miniprogram', () => ({
  default: {
    create: vi.fn(() => ({
      interceptors: {
        request: { use: vi.fn() },
        response: { use: vi.fn() },
      },
      get: vi.fn(),
      post: vi.fn(),
    })),
  },
}))