Files
frontend-miniapp/tests/unit/hostEnvironment.spec.ts
lyf f9fefa11ef
Some checks failed
CI / verify (push) Has been cancelled
修复小程序内来馆地图导航
2026-07-11 17:24:45 +08:00

50 lines
1.5 KiB
TypeScript

import { afterEach, describe, expect, it, vi } from 'vitest'
import { isEmbeddedInWechatMiniProgram } from '@/utils/hostEnvironment'
const createWindow = (overrides: Record<string, unknown> = {}) => ({
location: { search: '', hash: '' },
navigator: { userAgent: '' },
...overrides
})
afterEach(() => {
vi.unstubAllGlobals()
})
describe('微信小程序宿主环境识别', () => {
it('同一模块可以识别延迟注入的微信环境标识', () => {
const testWindow = createWindow()
vi.stubGlobal('window', testWindow)
expect(isEmbeddedInWechatMiniProgram()).toBe(false)
Object.assign(testWindow, { __wxjs_environment: 'miniprogram' })
expect(isEmbeddedInWechatMiniProgram()).toBe(true)
})
it('支持宿主在普通查询或 hash 查询中显式声明环境', () => {
vi.stubGlobal('window', createWindow({
location: {
search: '?embedded=weapp',
hash: '#/pages/index/index?tab=guide'
}
}))
expect(isEmbeddedInWechatMiniProgram()).toBe(true)
vi.stubGlobal('window', createWindow({
location: {
search: '',
hash: '#/pages/index/index?tab=guide&embedded=wechat-mini-program'
}
}))
expect(isEmbeddedInWechatMiniProgram()).toBe(true)
})
it('普通微信 H5 不会被误判为小程序 web-view', () => {
vi.stubGlobal('window', createWindow({
navigator: { userAgent: 'Mozilla/5.0 MicroMessenger/8.0.50' }
}))
expect(isEmbeddedInWechatMiniProgram()).toBe(false)
})
})