Files
zkxw/mobile-h5/utils/oa-navigate-back.test.js
T
2026-10-13 15:18:01 +08:00

51 lines
1.2 KiB
JavaScript

import assert from 'node:assert/strict'
import { navigateBackFromOaHost } from './oa-navigate-back.js'
const waitForSilentProbe = () =>
new Promise((resolve) => setTimeout(resolve, 320))
let redirects = []
let stack = [
{ route: 'pages/market/webview/index' },
{ route: 'pages/oa/webview/index' }
]
globalThis.getCurrentPages = () => stack
globalThis.uni = {
navigateBack() {
stack.pop()
},
redirectTo({ url }) {
redirects.push(url)
},
reLaunch() {
throw new Error('redirectTo should not fail in this test')
}
}
navigateBackFromOaHost({ fallbackUrl: '/pages/index/index' })
await waitForSilentProbe()
assert.deepEqual(
redirects,
[],
'成功返回到上一层 web-view 后不得误触发 fallback'
)
redirects = []
const stuckPage = { route: 'pages/market/webview/index' }
stack = [{ route: 'pages/index/index' }, stuckPage]
globalThis.uni.navigateBack = () => {}
navigateBackFromOaHost({ fallbackUrl: '/pages/index/index' })
await waitForSilentProbe()
assert.deepEqual(
redirects,
['/pages/index/index'],
'同一发起页仍在相同栈顶时必须执行 fallback'
)
delete globalThis.getCurrentPages
delete globalThis.uni
console.log('oa-navigate-back: ok')