Files
frontend-miniapp/tests/unit/hostEnvironment.spec.ts
lyf 8b3e3f8d55
Some checks failed
CI / verify (push) Has been cancelled
修复小程序讲解页面返回回退
2026-07-28 10:40:25 +08:00

52 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)
})
})