refactor: 统一 log.ts/debug.ts 的测试 mock 为共享定义

- 新增 tests/mocks/log.ts 和 tests/mocks/debug.ts,覆盖源文件全部实际导出
- 移除旧 mock 中不存在的导出(logToFile、logEvent、getLogFilePath)
- 13 个测试文件改为使用共享 mock,避免定义分散和不一致

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
claude-code-best
2026-04-22 23:35:59 +08:00
parent 7ea69ca279
commit 1173a62301
16 changed files with 87 additions and 134 deletions

View File

@@ -1,20 +1,8 @@
import { mock, describe, expect, test } from "bun:test";
import { debugMock } from "../../../tests/mocks/debug";
// Mock debug.ts to cut bootstrap/state dependency chain
mock.module("src/utils/debug.ts", () => ({
logForDebugging: () => {},
isDebugMode: () => false,
isDebugToStdErr: () => false,
getDebugFilePath: () => null,
getDebugFilter: () => null,
getMinDebugLogLevel: () => "debug",
getDebugLogPath: () => "/tmp/mock-debug.log",
flushDebugLogs: async () => {},
enableDebugLogging: () => false,
setHasFormattedOutput: () => {},
getHasFormattedOutput: () => false,
logAntError: () => {},
}));
mock.module("src/utils/debug.ts", debugMock);
const { validateBoundedIntEnvVar } = await import("../envValidation");

View File

@@ -1,12 +1,8 @@
import { mock, describe, expect, test } from "bun:test";
import { logMock } from "../../../tests/mocks/log";
// Mock log.ts to cut the heavy dependency chain (log.ts → bootstrap/state.ts → analytics)
mock.module("src/utils/log.ts", () => ({
logError: () => {},
logToFile: () => {},
getLogDisplayTitle: () => "",
logEvent: () => {},
}));
mock.module("src/utils/log.ts", logMock);
const { safeParseJSON, safeParseJSONC, parseJSONL, addItemToJSONCArray } =
await import("../json");

View File

@@ -1,12 +1,8 @@
import { mock, describe, expect, test, beforeEach } from "bun:test";
import { logMock } from "../../../tests/mocks/log";
// Mock log.ts to cut the bootstrap/state dependency chain
mock.module("src/utils/log.ts", () => ({
logError: () => {},
logToFile: () => {},
getLogDisplayTitle: () => "",
logEvent: () => {},
}));
mock.module("src/utils/log.ts", logMock);
const { memoizeWithTTL, memoizeWithTTLAsync, memoizeWithLRU } = await import(
"../memoize"

View File

@@ -1,22 +1,8 @@
import { mock, describe, expect, test } from "bun:test";
import { logMock } from "../../../tests/mocks/log";
// Mock heavy dependency chain: tokenEstimation.ts → log.ts → bootstrap/state.ts
mock.module("src/utils/log.ts", () => ({
logError: () => {},
logToFile: () => {},
getLogDisplayTitle: () => "",
logEvent: () => {},
logMCPError: () => {},
logMCPDebug: () => {},
dateToFilename: (d: Date) => d.toISOString().replace(/[:.]/g, "-"),
getLogFilePath: () => "/tmp/mock-log",
attachErrorLogSink: () => {},
getInMemoryErrors: () => [],
loadErrorLogs: async () => [],
getErrorLogByIndex: async () => null,
captureAPIRequest: () => {},
_resetErrorLogForTesting: () => {},
}));
mock.module("src/utils/log.ts", logMock);
// Mock tokenEstimation to avoid pulling in API provider deps
mock.module("src/services/tokenEstimation.ts", () => ({