Files
Alfred/tests/web/hooks/use-logger.test.ts
lanyuanxiaoyao ab7b7fb189 fix: 质量修复 — ESLint 规则 TS6 兼容 + catch 注解 + 空函数体注释化 + 后端架构对齐 + 前端红线修复
- enforce-catch-type: 增加 TSUnknownKeyword 判断,消除28个 TS6 假阳性
- no-empty-function: 统一为注释方案,移除测试/生产分支和 eslint-disable 引导
- logger.ts: 空函数体改为注释说明,删除无用 eslint-disable 指令
- 补充15处 catch 子句 : unknown 类型注解
- 清理7个测试文件失效 eslint-disable 指令
- chat/send.ts: 提取 getModelWithProvider DAO,消除直接 Drizzle 操作
- projects/update.ts: 修复死代码+条件逻辑 bug
- providers/update.ts: 补充至少一个字段校验
- 前端: inline style → CSS className, ProviderFormModal whitespace 校验
- 开发文档: 更新 Zod 使用说明(AI SDK 框架级约束)
2026-06-01 23:11:42 +08:00

73 lines
1.9 KiB
TypeScript

import { describe, expect, mock, test } from "bun:test";
import { createElement } from "react";
import type { Logger } from "../../../src/web/utils/logger";
import { useLogger } from "../../../src/web/hooks/use-logger";
import { renderWithProviders } from "../test-utils";
function HookTester({ onMount }: { onMount: (logger: Logger) => void }) {
const logger = useLogger();
onMount(logger);
return null;
}
describe("useLogger", () => {
test("返回 Logger 实例含所有方法", () => {
let logger: Logger | undefined;
const onMount = (l: Logger) => {
logger = l;
};
renderWithProviders(createElement(HookTester, { onMount }));
expect(logger).toBeDefined();
expect(typeof logger!.debug).toBe("function");
expect(typeof logger!.info).toBe("function");
expect(typeof logger!.warn).toBe("function");
expect(typeof logger!.error).toBe("function");
expect(typeof logger!.child).toBe("function");
expect(typeof logger!.setLevel).toBe("function");
});
test("调用 logger.warn 时静默不抛异常", () => {
const warnSpy = mock(() => {});
const origWarn = console.warn;
console.warn = warnSpy;
let logger: Logger | undefined;
renderWithProviders(
createElement(HookTester, {
onMount: (l: Logger) => {
logger = l;
},
}),
);
expect(() => logger!.warn("测试警告")).not.toThrow();
console.warn = origWarn;
expect(warnSpy).toHaveBeenCalled();
});
test("调用 logger.error 时静默不抛异常", () => {
const errorSpy = mock(() => {});
const origError = console.error;
console.error = errorSpy;
let logger: Logger | undefined;
renderWithProviders(
createElement(HookTester, {
onMount: (l: Logger) => {
logger = l;
},
}),
);
expect(() => logger!.error("测试错误")).not.toThrow();
console.error = origError;
expect(errorSpy).toHaveBeenCalled();
});
});