1
0

refactor: 清理测试代码 eslint-disable 指令,消除文件级和重复局部禁用

This commit is contained in:
2026-05-21 00:35:08 +08:00
parent ccd16a583e
commit b432581444
6 changed files with 185 additions and 175 deletions

View File

@@ -1,7 +1,3 @@
/* eslint-disable @typescript-eslint/no-require-imports */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-unsafe-call */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
import "../../../tests/web/test-utils";
import { act, fireEvent, render, screen, waitFor } from "@testing-library/react";
import { afterEach, beforeEach, describe, expect, test, vi } from "bun:test";
@@ -9,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, test, vi } from "bun:test";
import { App } from "../../../src/web/app";
import { THEME_MEDIA_QUERY, THEME_PREFERENCE_STORAGE_KEY } from "../../../src/web/hooks/use-theme-preference";
function createDashboardResult(overrides = {}) {
function createDashboardResult(overrides: Record<string, unknown> = {}) {
return {
data: {
summary: {
@@ -35,6 +31,40 @@ function createDashboardResult(overrides = {}) {
};
}
const useDashboardMock = vi.fn(() => createDashboardResult());
const useMetaMock = vi.fn(() => ({
data: { checkerTypes: ["http", "cmd"] as string[], version: "0.1.0" },
}));
const useTargetDetailMock = vi.fn(() => ({
activeTab: "overview",
closeDrawer: vi.fn(),
handlePageChange: vi.fn(),
handleTabChange: vi.fn(),
handleTimeChange: vi.fn(),
historyData: {
items: [],
page: 1,
pageSize: 20,
total: 0,
},
historyLoading: false,
metricsData: null,
metricsLoading: false,
openDrawer: vi.fn(),
selectedTarget: null,
timeFrom: "",
timeTo: "",
}));
void vi.mock("../../../src/web/hooks/use-queries", () => ({
useDashboard: useDashboardMock,
useMeta: useMetaMock,
}));
void vi.mock("../../../src/web/hooks/use-target-detail", () => ({
useTargetDetail: useTargetDetailMock,
}));
function installMatchMedia(initialMatches: boolean) {
const originalMatchMedia = window.matchMedia;
let matches = initialMatches;
@@ -65,43 +95,11 @@ function installMatchMedia(initialMatches: boolean) {
};
}
// Mock hooks
void vi.mock("../../../src/web/hooks/use-queries", () => ({
useDashboard: vi.fn(() => createDashboardResult()),
useMeta: vi.fn(() => ({
data: { checkerTypes: ["http", "cmd"], version: "0.1.0" },
})),
}));
void vi.mock("../../../src/web/hooks/use-target-detail", () => ({
useTargetDetail: vi.fn(() => ({
activeTab: "overview",
closeDrawer: vi.fn(),
handlePageChange: vi.fn(),
handleTabChange: vi.fn(),
handleTimeChange: vi.fn(),
historyData: {
items: [],
page: 1,
pageSize: 20,
total: 0,
},
historyLoading: false,
metricsData: null,
metricsLoading: false,
openDrawer: vi.fn(),
selectedTarget: null,
timeFrom: "",
timeTo: "",
})),
}));
describe("App", () => {
let matchMediaController: ReturnType<typeof installMatchMedia>;
beforeEach(() => {
const { useDashboard } = require("../../../src/web/hooks/use-queries");
useDashboard.mockReturnValue(createDashboardResult());
useDashboardMock.mockReturnValue(createDashboardResult());
window.localStorage.clear();
document.documentElement.removeAttribute("theme-mode");
matchMediaController = installMatchMedia(false);
@@ -117,8 +115,7 @@ describe("App", () => {
});
test("loading 状态不崩溃", () => {
const { useDashboard } = require("../../../src/web/hooks/use-queries");
useDashboard.mockReturnValue(
useDashboardMock.mockReturnValue(
createDashboardResult({
data: null,
dataUpdatedAt: 0,
@@ -134,12 +131,11 @@ describe("App", () => {
});
test("错误状态不崩溃", () => {
const { useDashboard } = require("../../../src/web/hooks/use-queries");
useDashboard.mockReturnValue(
useDashboardMock.mockReturnValue(
createDashboardResult({
data: null,
dataUpdatedAt: 0,
error: { message: "Network error" },
error: new Error("Network error"),
isFetching: false,
isLoading: false,
refetch: vi.fn(),
@@ -151,8 +147,7 @@ describe("App", () => {
});
test("有数据状态不崩溃", () => {
const { useDashboard } = require("../../../src/web/hooks/use-queries");
useDashboard.mockReturnValue(
useDashboardMock.mockReturnValue(
createDashboardResult({
data: {
summary: {
@@ -215,9 +210,8 @@ describe("App", () => {
});
test("缺失版本时不展示版本占位", () => {
const { useMeta } = require("../../../src/web/hooks/use-queries");
useMeta.mockReturnValue({
data: { checkerTypes: ["http", "cmd"] },
useMetaMock.mockReturnValue({
data: { checkerTypes: ["http", "cmd"], version: undefined as unknown as string },
});
render(<App />);
@@ -225,8 +219,7 @@ describe("App", () => {
});
test("复用 useMeta 查询结果", () => {
const { useMeta } = require("../../../src/web/hooks/use-queries");
render(<App />);
expect(useMeta).toHaveBeenCalled();
expect(useMetaMock).toHaveBeenCalled();
});
});