Breadcrumb.spec.js 2.84 KB
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);
  });
});