diff --git a/test/unit/breadcrumb/index.test.jsx b/test/unit/breadcrumb/index.test.jsx
index cea9dae804..5568f1426e 100644
--- a/test/unit/breadcrumb/index.test.jsx
+++ b/test/unit/breadcrumb/index.test.jsx
@@ -1,19 +1,230 @@
+import { mount } from '@vue/test-utils';
+import { nextTick } from 'vue';
+import { expect, vi } from 'vitest';
+import { Breadcrumb, BreadcrumbItem } from '@/src/breadcrumb/index';
+
+const _mount = (render, $router = {}) =>
+ mount(render, {
+ global: {
+ provide: {
+ breadcrumb: {},
+ },
+ config: {
+ globalProperties: {
+ $router,
+ },
+ },
+ },
+ });
+
describe('Breadcrumb', () => {
describe(':props', () => {
- test('_______', () => {
- expect(true).toEqual(true);
+ it('maxItemWidth', async () => {
+ const wrapper = mount({
+ render() {
+ return (
+
+ 页面1
+ 页面2面包屑文案超长时悬浮显示文案全部信息
+
+ );
+ },
+ });
+ await nextTick();
+ const items = wrapper.findAllComponents(BreadcrumbItem);
+ expect(items.at(0).find('.t-breadcrumb__inner').element.getAttribute('style')).toContain('max-width: 150px;');
+ expect(items.at(1).find('.t-breadcrumb__inner').element.getAttribute('style')).toContain('max-width: 150px;');
+ });
+ it('options ', async () => {
+ const wrapper = mount({
+ render() {
+ const options = [{ content: '页面1' }, { content: '页面2', href: 'https://www.tencent.com' }];
+ return ;
+ },
+ });
+ await nextTick();
+ expect(wrapper.findAll('.t-breadcrumb__item').length).toEqual(2);
+ expect(wrapper.findAll('.t-breadcrumb__inner')[0].text()).toEqual('页面1');
+ expect(wrapper.findAll('.t-breadcrumb__inner')[1].text()).toEqual('页面2');
+ expect(wrapper.find('.t-link').element.getAttribute('href')).toEqual('https://www.tencent.com');
+ });
+ it('separator ', async () => {
+ const wrapper = mount({
+ render() {
+ return (
+
+ 页面1
+ 页面2
+
+ );
+ },
+ });
+ await nextTick();
+ expect(wrapper.find('.t-breadcrumb__separator').text()).toEqual('@');
+ });
+ });
+ describe('', () => {
+ it('separator ', async () => {
+ const wrapper = mount({
+ render() {
+ return (
+ @
,
+ }}
+ >
+ 页面1
+ 页面2
+
+ );
+ },
+ });
+ await nextTick();
+ expect(wrapper.find('.t-breadcrumb__separator').html()).toContain('@
');
+ });
+ });
+});
+
+describe('BreadcrumbItem', () => {
+ describe(':props', () => {
+ it('disabled', async () => {
+ const wrapper = mount({
+ render() {
+ return (
+
+ 页面1
+
+ );
+ },
+ });
+ await nextTick();
+ expect(wrapper.find('.t-breadcrumb--text-overflow').classes()).toContain('t-is-disabled');
+ });
+ it('href', async () => {
+ const wrapper = mount({
+ render() {
+ return (
+
+ 页面1
+
+ );
+ },
+ });
+ await nextTick();
+ expect(wrapper.find('.t-breadcrumb--text-overflow').classes()).toContain('t-link');
+ expect(wrapper.find('.t-link').element.getAttribute('href')).toEqual('https://www.tencent.com');
+ });
+ it('target', async () => {
+ const wrapper = mount({
+ render() {
+ return (
+
+
+ 页面1
+
+
+ );
+ },
+ });
+ await nextTick();
+ expect(wrapper.find('.t-breadcrumb--text-overflow').classes()).toContain('t-link');
+ expect(wrapper.find('.t-link').element.getAttribute('href')).toEqual('https://www.tencent.com');
+ expect(wrapper.find('.t-link').element.getAttribute('target')).toEqual('_blank');
+ });
+ it('to', async () => {
+ const push = vi.fn();
+ const wrapper = _mount(
+ {
+ render() {
+ return (
+
+ 页面1
+
+ );
+ },
+ },
+ {
+ push,
+ },
+ );
+ await wrapper.find('.t-breadcrumb__inner').trigger('click');
+ expect(push).toHaveBeenCalled();
+ expect(wrapper.find('.t-breadcrumb--text-overflow').classes()).toContain('t-link');
+ });
+ it('replace', async () => {
+ const replace = vi.fn();
+ const wrapper = _mount(
+ {
+ render() {
+ return (
+
+
+ 页面1
+
+
+ );
+ },
+ },
+ {
+ replace,
+ },
+ );
+ await wrapper.find('.t-breadcrumb__inner').trigger('click');
+ expect(replace).toHaveBeenCalled();
+ });
+ it('maxWidth', async () => {
+ const wrapper = mount({
+ render() {
+ return (
+
+ 页面1超长了页面1超长了页面1超长了页面1超长了页面1超长了
+ 页面2面包屑文案超长时悬浮显示文案全部信息
+
+ );
+ },
+ });
+ await nextTick();
+ const items = wrapper.findAllComponents(BreadcrumbItem);
+ expect(items.at(0).find('.t-breadcrumb__inner').element.getAttribute('style')).toContain('max-width: 100px;');
+ expect(items.at(1).find('.t-breadcrumb__inner').element.getAttribute('style')).toContain('max-width: 150px;');
});
});
describe('@event', () => {
- test('_______', () => {
- expect(true).toEqual(true);
+ it('click', async () => {
+ const fn = vi.fn();
+ const wrapper = mount({
+ render() {
+ return (
+
+ 页面1
+
+ );
+ },
+ });
+ await nextTick();
+ await wrapper.findComponent(BreadcrumbItem).trigger('click');
+ expect(fn).toHaveBeenCalled();
});
});
describe('', () => {
- test('_______', () => {
- expect(true).toEqual(true);
+ it('default', async () => {
+ const wrapper = mount({
+ render() {
+ return (
+
+ 页面1
,
+ }}
+ >
+
+ );
+ },
+ });
+ await nextTick();
+ expect(wrapper.find('.t-breadcrumb__inner').html()).contain('页面1
');
});
});
});