Commit 348621fe by Sweet Zhang

fix(test): 单测环境不加载 dev 面板,消除 jsdom XHR 报错噪音

parent a7ad962a
...@@ -7,12 +7,16 @@ import LoginBadge from '@/components/feature/LoginBadge.vue' ...@@ -7,12 +7,16 @@ import LoginBadge from '@/components/feature/LoginBadge.vue'
const route = useRoute() const route = useRoute()
const { t } = useI18n() const { t } = useI18n()
// 生产构建中 import.meta.env.DEV 被替换为 false,死分支连同动态导入一起被 tree-shake // 生产构建中 import.meta.env.DEV 被替换为 false,死分支连同动态导入一起被 tree-shake。
// 单测(vitest)下 DEV 同样为 true,若不排除,dev 面板会在测试里真实发起后端请求,
// jsdom 连不上后端会产生 XHR 报错噪音,因此按 MODE 一并排除。
const enableDevPanel = import.meta.env.DEV && import.meta.env.MODE !== 'test'
// dev 面板加载失败(vite 重启、依赖重优化、跨机器网络抖动)时降级渲染为空, // dev 面板加载失败(vite 重启、依赖重优化、跨机器网络抖动)时降级渲染为空,
// 不再抛出「Failed to fetch dynamically imported module」的未捕获异常。 // 不再抛出「Failed to fetch dynamically imported module」的未捕获异常。
const DevFallback = defineComponent({ render: () => null }) const DevFallback = defineComponent({ render: () => null })
const DevBrokerSwitcher = import.meta.env.DEV const DevBrokerSwitcher = enableDevPanel
? defineAsyncComponent({ ? defineAsyncComponent({
loader: () => import('@/components/dev/DevBrokerSwitcher.vue'), loader: () => import('@/components/dev/DevBrokerSwitcher.vue'),
timeout: 10_000, timeout: 10_000,
......
...@@ -12,11 +12,7 @@ vi.mock('@/utils/oidc', () => ({ ...@@ -12,11 +12,7 @@ vi.mock('@/utils/oidc', () => ({
signoutRedirect: vi.fn() signoutRedirect: vi.fn()
})) }))
// 测试环境里 import.meta.env.DEV 同样为 true,App 会真的加载 dev 面板并发起请求, // dev 面板在 App.vue 里已按 MODE !== 'test' 排除,无需在此 mock
// jsdom 无法连接后端地址,会产生 XHR 的 AggregateError 噪音。这里隔离掉。
vi.mock('@/components/dev/DevBrokerSwitcher.vue', () => ({
default: { render: () => null }
}))
import App from '../App.vue' import App from '../App.vue'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment