1
0
Files
DiAL/tests/server/config.test.ts
lanyuanxiaoyao 3f477d1b57 feat: 完善全栈打包质量门禁
在业务开发前补齐 lint、format、verify 与生产运行时契约,确保开发联调和 executable 打包链路可重复验证。
2026-05-09 14:48:49 +08:00

39 lines
1.4 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { readRuntimeConfig } from "../../src/server/config";
describe("runtime config", () => {
test("默认使用 127.0.0.1:3000", () => {
expect(readRuntimeConfig([], {})).toEqual({ host: "127.0.0.1", port: 3000 });
});
test("CLI 参数优先于环境变量", () => {
expect(readRuntimeConfig(["--host", "0.0.0.0", "--port", "4001"], { HOST: "127.0.0.1", PORT: "3001" })).toEqual({
host: "0.0.0.0",
port: 4001,
});
});
test("环境变量可以覆盖默认端口", () => {
expect(readRuntimeConfig([], { PORT: "4100" })).toEqual({ host: "127.0.0.1", port: 4100 });
});
test("支持 inline CLI 参数", () => {
expect(readRuntimeConfig(["--host=localhost", "--port=4002"], {})).toEqual({
host: "localhost",
port: 4002,
});
});
test("拒绝无效端口", () => {
expect(() => readRuntimeConfig(["--port", "invalid"], {})).toThrow("无效端口");
expect(() => readRuntimeConfig(["--port", "3000.5"], {})).toThrow("无效端口");
expect(() => readRuntimeConfig(["--port", "-1"], {})).toThrow("无效端口");
expect(() => readRuntimeConfig(["--port", "65536"], {})).toThrow("无效端口");
});
test("接受端口边界值", () => {
expect(readRuntimeConfig(["--port", "0"], {})).toEqual({ host: "127.0.0.1", port: 0 });
expect(readRuntimeConfig(["--port", "65535"], {})).toEqual({ host: "127.0.0.1", port: 65535 });
});
});