Breadcrumb.spec.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import { mount, createLocalVue } from '@vue/test-utils'
  2. import VueRouter from 'vue-router'
  3. import ElementUI from 'element-ui'
  4. import Breadcrumb from '@/components/Breadcrumb/index.vue'
  5. const localVue = createLocalVue()
  6. localVue.use(VueRouter)
  7. localVue.use(ElementUI)
  8. const routes = [
  9. {
  10. path: '/',
  11. name: 'home',
  12. children: [
  13. {
  14. path: 'dashboard',
  15. name: 'dashboard'
  16. }
  17. ]
  18. },
  19. {
  20. path: '/menu',
  21. name: 'menu',
  22. children: [
  23. {
  24. path: 'menu1',
  25. name: 'menu1',
  26. meta: { title: 'menu1' },
  27. children: [
  28. {
  29. path: 'menu1-1',
  30. name: 'menu1-1',
  31. meta: { title: 'menu1-1' }
  32. },
  33. {
  34. path: 'menu1-2',
  35. name: 'menu1-2',
  36. redirect: 'noredirect',
  37. meta: { title: 'menu1-2' },
  38. children: [
  39. {
  40. path: 'menu1-2-1',
  41. name: 'menu1-2-1',
  42. meta: { title: 'menu1-2-1' }
  43. },
  44. {
  45. path: 'menu1-2-2',
  46. name: 'menu1-2-2'
  47. }
  48. ]
  49. }
  50. ]
  51. }
  52. ]
  53. }
  54. ]
  55. const router = new VueRouter({
  56. routes
  57. })
  58. describe('Breadcrumb.vue', () => {
  59. const wrapper = mount(Breadcrumb, {
  60. localVue,
  61. router
  62. })
  63. it('dashboard', () => {
  64. router.push('/dashboard')
  65. const len = wrapper.findAll('.el-breadcrumb__inner').length
  66. expect(len).toBe(1)
  67. })
  68. it('normal route', () => {
  69. router.push('/menu/menu1')
  70. const len = wrapper.findAll('.el-breadcrumb__inner').length
  71. expect(len).toBe(2)
  72. })
  73. it('nested route', () => {
  74. router.push('/menu/menu1/menu1-2/menu1-2-1')
  75. const len = wrapper.findAll('.el-breadcrumb__inner').length
  76. expect(len).toBe(4)
  77. })
  78. it('no meta.title', () => {
  79. router.push('/menu/menu1/menu1-2/menu1-2-2')
  80. const len = wrapper.findAll('.el-breadcrumb__inner').length
  81. expect(len).toBe(3)
  82. })
  83. // it('click link', () => {
  84. // router.push('/menu/menu1/menu1-2/menu1-2-2')
  85. // const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner')
  86. // const second = breadcrumbArray.at(1)
  87. // console.log(breadcrumbArray)
  88. // const href = second.find('a').attributes().href
  89. // expect(href).toBe('#/menu/menu1')
  90. // })
  91. // it('noRedirect', () => {
  92. // router.push('/menu/menu1/menu1-2/menu1-2-1')
  93. // const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner')
  94. // const redirectBreadcrumb = breadcrumbArray.at(2)
  95. // expect(redirectBreadcrumb.contains('a')).toBe(false)
  96. // })
  97. it('last breadcrumb', () => {
  98. router.push('/menu/menu1/menu1-2/menu1-2-1')
  99. const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner')
  100. const redirectBreadcrumb = breadcrumbArray.at(3)
  101. expect(redirectBreadcrumb.contains('a')).toBe(false)
  102. })
  103. })