xiangyixiangqin/miniapp/__tests__/mocks/uni.js
2026-01-02 18:00:49 +08:00

76 lines
1.3 KiB
JavaScript

/**
* Mock for uni-app API
* Used for testing storage and request modules
*/
// In-memory storage for testing
const storage = new Map()
// Track auth redirects for testing
let authRedirectTriggered = false
let lastRedirectUrl = null
export const uni = {
// Storage APIs
setStorageSync(key, value) {
storage.set(key, value)
},
getStorageSync(key) {
return storage.get(key) ?? ''
},
removeStorageSync(key) {
storage.delete(key)
},
clearStorageSync() {
storage.clear()
},
// Navigation APIs
reLaunch(options) {
authRedirectTriggered = true
lastRedirectUrl = options.url
},
navigateTo(options) {
lastRedirectUrl = options.url
},
// Request API (mock)
request(options) {
// This will be overridden in specific tests
if (options.success) {
options.success({ statusCode: 200, data: { success: true } })
}
},
// Test helpers
_getStorage() {
return storage
},
_clearStorage() {
storage.clear()
},
_wasAuthRedirectTriggered() {
return authRedirectTriggered
},
_getLastRedirectUrl() {
return lastRedirectUrl
},
_resetRedirectState() {
authRedirectTriggered = false
lastRedirectUrl = null
}
}
// Make uni available globally for modules that expect it
globalThis.uni = uni
export default uni