/**
* AppLayout 组件测试
*/
import React from "react"
import { describe, it, expect, vi } from "vitest"
import { render, screen } from "@testing-library/react"
import { MemoryRouter } from "react-router-dom"
// mock Header 组件
vi.mock("@/components/layout/Header", () => ({
default: () => ,
}))
// mock Outlet
vi.mock("react-router-dom", async () => {
const actual = await vi.importActual("react-router-dom")
return {
...actual,
Outlet: () => Outlet Content
,
}
})
import AppLayout from "@/components/layout/AppLayout"
const renderWithRouter = (ui: React.ReactElement) => {
return render({ui})
}
describe("AppLayout", () => {
it("应该渲染 Header", () => {
renderWithRouter(侧边栏} />)
expect(screen.getByTestId("mock-header")).toBeInTheDocument()
})
it("应该渲染侧边栏", () => {
renderWithRouter(侧边栏内容} />)
expect(screen.getByTestId("sidebar")).toBeInTheDocument()
})
it("应该渲染 Outlet 内容", () => {
renderWithRouter(侧边栏} />)
expect(screen.getByTestId("mock-outlet")).toBeInTheDocument()
})
it("应该包含正确的语义化结构", () => {
const { container } = renderWithRouter(侧边栏} />)
expect(container.querySelector(".xx-app-shell")).toBeInTheDocument()
expect(container.querySelector(".xx-app-body")).toBeInTheDocument()
expect(container.querySelector(".xx-app-content")).toBeInTheDocument()
expect(container.querySelector("main")).toBeInTheDocument()
})
})