99 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			99 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
|  | import { mount, createLocalVue } from '@vue/test-utils' | ||
|  | import VueRouter from 'vue-router' | ||
|  | import ElementUI from 'element-ui' | ||
|  | import Breadcrumb from '@/components/Breadcrumb/index.vue' | ||
|  | 
 | ||
|  | const localVue = createLocalVue() | ||
|  | localVue.use(VueRouter) | ||
|  | localVue.use(ElementUI) | ||
|  | 
 | ||
|  | const routes = [ | ||
|  |   { | ||
|  |     path: '/', | ||
|  |     name: 'home', | ||
|  |     children: [{ | ||
|  |       path: 'dashboard', | ||
|  |       name: 'dashboard' | ||
|  |     }] | ||
|  |   }, | ||
|  |   { | ||
|  |     path: '/menu', | ||
|  |     name: 'menu', | ||
|  |     children: [{ | ||
|  |       path: 'menu1', | ||
|  |       name: 'menu1', | ||
|  |       meta: { title: 'menu1' }, | ||
|  |       children: [{ | ||
|  |         path: 'menu1-1', | ||
|  |         name: 'menu1-1', | ||
|  |         meta: { title: 'menu1-1' } | ||
|  |       }, | ||
|  |       { | ||
|  |         path: 'menu1-2', | ||
|  |         name: 'menu1-2', | ||
|  |         redirect: 'noredirect', | ||
|  |         meta: { title: 'menu1-2' }, | ||
|  |         children: [{ | ||
|  |           path: 'menu1-2-1', | ||
|  |           name: 'menu1-2-1', | ||
|  |           meta: { title: 'menu1-2-1' } | ||
|  |         }, | ||
|  |         { | ||
|  |           path: 'menu1-2-2', | ||
|  |           name: 'menu1-2-2' | ||
|  |         }] | ||
|  |       }] | ||
|  |     }] | ||
|  |   }] | ||
|  | 
 | ||
|  | const router = new VueRouter({ | ||
|  |   routes | ||
|  | }) | ||
|  | 
 | ||
|  | describe('Breadcrumb.vue', () => { | ||
|  |   const wrapper = mount(Breadcrumb, { | ||
|  |     localVue, | ||
|  |     router | ||
|  |   }) | ||
|  |   it('dashboard', () => { | ||
|  |     router.push('/dashboard') | ||
|  |     const len = wrapper.findAll('.el-breadcrumb__inner').length | ||
|  |     expect(len).toBe(1) | ||
|  |   }) | ||
|  |   it('normal route', () => { | ||
|  |     router.push('/menu/menu1') | ||
|  |     const len = wrapper.findAll('.el-breadcrumb__inner').length | ||
|  |     expect(len).toBe(2) | ||
|  |   }) | ||
|  |   it('nested route', () => { | ||
|  |     router.push('/menu/menu1/menu1-2/menu1-2-1') | ||
|  |     const len = wrapper.findAll('.el-breadcrumb__inner').length | ||
|  |     expect(len).toBe(4) | ||
|  |   }) | ||
|  |   it('no meta.title', () => { | ||
|  |     router.push('/menu/menu1/menu1-2/menu1-2-2') | ||
|  |     const len = wrapper.findAll('.el-breadcrumb__inner').length | ||
|  |     expect(len).toBe(3) | ||
|  |   }) | ||
|  |   // it('click link', () => {
 | ||
|  |   //   router.push('/menu/menu1/menu1-2/menu1-2-2')
 | ||
|  |   //   const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner')
 | ||
|  |   //   const second = breadcrumbArray.at(1)
 | ||
|  |   //   console.log(breadcrumbArray)
 | ||
|  |   //   const href = second.find('a').attributes().href
 | ||
|  |   //   expect(href).toBe('#/menu/menu1')
 | ||
|  |   // })
 | ||
|  |   // it('noRedirect', () => {
 | ||
|  |   //   router.push('/menu/menu1/menu1-2/menu1-2-1')
 | ||
|  |   //   const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner')
 | ||
|  |   //   const redirectBreadcrumb = breadcrumbArray.at(2)
 | ||
|  |   //   expect(redirectBreadcrumb.contains('a')).toBe(false)
 | ||
|  |   // })
 | ||
|  |   it('last breadcrumb', () => { | ||
|  |     router.push('/menu/menu1/menu1-2/menu1-2-1') | ||
|  |     const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner') | ||
|  |     const redirectBreadcrumb = breadcrumbArray.at(3) | ||
|  |     expect(redirectBreadcrumb.contains('a')).toBe(false) | ||
|  |   }) | ||
|  | }) |