From 76a773509950feaf53a03d300b537d94b95624bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Wed, 8 Apr 2026 07:07:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=80=92=E5=BD=92?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=BB=84=E4=BB=B6=20MenuItem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/__tests__/components/MenuItem.test.ts | 72 +++++++++++++++++++ .../src/components/MenuItem.vue | 36 ++++++++++ 2 files changed, 108 insertions(+) create mode 100644 novalon-manage-web/src/__tests__/components/MenuItem.test.ts create mode 100644 novalon-manage-web/src/components/MenuItem.vue diff --git a/novalon-manage-web/src/__tests__/components/MenuItem.test.ts b/novalon-manage-web/src/__tests__/components/MenuItem.test.ts new file mode 100644 index 0000000..92bd3eb --- /dev/null +++ b/novalon-manage-web/src/__tests__/components/MenuItem.test.ts @@ -0,0 +1,72 @@ +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import MenuItem from '@/components/MenuItem.vue' + +describe('MenuItem 组件', () => { + it('应该正确接收菜单项 props', () => { + const menu = { + id: 1, + name: '仪表盘', + path: '/dashboard', + icon: 'Odometer', + sort: 1 + } + + const wrapper = mount(MenuItem, { + props: { menu }, + global: { + stubs: { + 'el-menu-item': { + template: '
' + }, + 'el-sub-menu': { + template: '
' + }, + 'el-icon': { + template: '
' + } + } + } + }) + + expect(wrapper.props('menu')).toEqual(menu) + }) + + it('应该正确处理有子菜单的菜单项', () => { + const menu = { + id: 2, + name: '系统管理', + path: '/system', + icon: 'Setting', + sort: 2, + children: [ + { + id: 3, + name: '用户管理', + path: '/users', + sort: 1 + } + ] + } + + const wrapper = mount(MenuItem, { + props: { menu }, + global: { + stubs: { + 'el-menu-item': { + template: '
' + }, + 'el-sub-menu': { + template: '
' + }, + 'el-icon': { + template: '
' + } + } + } + }) + + expect(wrapper.props('menu')).toEqual(menu) + expect(wrapper.props('menu').children).toHaveLength(1) + }) +}) diff --git a/novalon-manage-web/src/components/MenuItem.vue b/novalon-manage-web/src/components/MenuItem.vue new file mode 100644 index 0000000..5f79386 --- /dev/null +++ b/novalon-manage-web/src/components/MenuItem.vue @@ -0,0 +1,36 @@ + + +