test(reports): support Node 22 module mocks
This commit is contained in:
@@ -7919,3 +7919,19 @@
|
||||
- 相关记录:BUG-511、BUG-512
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-514 | 专业报告导出测试使用 Node 24 模块 mock 选项,Node 22 发布门加载为空模块
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-03
|
||||
- 最近更新:2026-09-04
|
||||
- 影响面:`frontend/tests/professional-report-reference-route.test.ts`、`Independent Staging Quality Gate`
|
||||
- 用户现象:staging quality gate Run 2362 的前端测试 `2627 pass / 1 fail`;专业报告导出路由测试报 `does not provide an export named 'ACCOUNT_BIRTH_SELECT'`,镜像发布被跳过。
|
||||
- 触发条件:Gitea 的 Node 22 执行新增的 `mock.module(..., { exports: ... })` 测试;本地 Node 24 会通过。
|
||||
- 根因:Node 22 的实验性模块 mock 使用 `namedExports`;未知的 `exports` 选项被忽略,生成不含命名导出的 mock 模块。本地只在 Node 24 验证,未覆盖发布门运行时。
|
||||
- 修复:改用 Node 22/24 均支持的 `namedExports`,按路由实际别名注册 mock;删除共享出生资料 helper 的 mock,改用真实 helper 和虚构数据库行。
|
||||
- 验证:Node 22.14 与 Node 24.15 分别运行 `tsx --test tests/professional-report-reference-route.test.ts`,均为 4/4 通过;Node 22.14 全量前端测试 2628/2628 通过,TypeScript 0 错。
|
||||
- 防复发:使用实验性 Node API 的发布门测试必须在仓库门禁主版本 Node 22 至少跑一次;模块 mock 不得使用仅新版本接受的选项名。
|
||||
- 相关记录:无
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
@@ -18,35 +18,31 @@ function executeReadyReportExport() {
|
||||
import { Agent } from "@mastra/core/agent";
|
||||
|
||||
const moduleUrl = (path) => pathToFileURL(process.cwd() + "/" + path).href;
|
||||
mock.module(moduleUrl("src/lib/personal-report-entitlement.ts"), { exports: {
|
||||
mock.module("@/lib/personal-report-entitlement", { namedExports: {
|
||||
checkSameOrigin: () => ({ ok: true }),
|
||||
resolveAllowedReportOrigins: () => [],
|
||||
}});
|
||||
mock.module(moduleUrl("src/lib/personal-report-service.ts"), { exports: {
|
||||
mock.module("@/lib/personal-report-service", { namedExports: {
|
||||
createSupabasePersonalReportService: () => ({
|
||||
getOwnedById: async () => ({ status: "ready" }),
|
||||
}),
|
||||
}});
|
||||
mock.module(moduleUrl("src/lib/server-owned-birth-profile.ts"), { exports: {
|
||||
ACCOUNT_BIRTH_SELECT: "birth-select",
|
||||
globalBirthProfileFromAccountRow: () => ({
|
||||
date: "1990-01-02",
|
||||
time: "03:04",
|
||||
latitude: 39.9,
|
||||
longitude: 116.4,
|
||||
timezoneOffset: 8,
|
||||
ayanamsa: "lahiri",
|
||||
}),
|
||||
}});
|
||||
mock.module(moduleUrl("src/lib/supabase/config.ts"), { exports: {
|
||||
mock.module("@/lib/supabase/config", { namedExports: {
|
||||
isSupabaseConfigurationError: () => false,
|
||||
}});
|
||||
const profileQuery = {
|
||||
select() { return this; },
|
||||
eq() { return this; },
|
||||
async maybeSingle() { return { data: {}, error: null }; },
|
||||
async maybeSingle() { return { data: {
|
||||
birth_date: "1990-01-02",
|
||||
reported_birth_time: "03:04",
|
||||
latitude: 39.9,
|
||||
longitude: 116.4,
|
||||
timezone_offset: 8,
|
||||
ayanamsa: "lahiri",
|
||||
}, error: null }; },
|
||||
};
|
||||
mock.module(moduleUrl("src/lib/supabase/server.ts"), { exports: {
|
||||
mock.module("@/lib/supabase/server", { namedExports: {
|
||||
createServerSupabaseClient: async () => ({
|
||||
auth: { getUser: async () => ({ data: { user: { id: "user-1" } }, error: null }) },
|
||||
from: () => profileQuery,
|
||||
|
||||
Reference in New Issue
Block a user