vitest&@vue/test-utils组件单元测试

发布时间 2023-12-11 20:56:08作者: fight139

依赖

"vitest": "0.34.6",
"@vue/test-utils": "2.4.3",
"axios-mock-adapter": "^1.22.0",

示例

import { mount } from "@vue/test-utils";
import { test, vi } from "vitest";
import { globalConfig, initEnv } from "../plugins";
import { Mock } from "../plugins/mock";
import { nextTick } from "vue";
import DictPicker from "@jhlc/platform/src/components/form/dict-picker/dict-picker";
import { RequestMethod } from "@jhlc/types/src/request-type";

test("字典挑选框", async () => {
  afterEach(() => {
    vi.clearAllTimers();
  });

  let dictCode = null;
  const wrapper = mount(DictPicker, {
    props: {
      dictCode: dictCode,
      "onUpdate:dictCode": (val) => {
        dictCode = val;
        console.log(val);
        expect(val).toBe("tm_order_status");
      },
    },
    global: globalConfig(),
  });
  initEnv(wrapper);
  Mock.add(
    "/system/dictModule/business/listWithDefaultApp",
    RequestMethod.get,
    {
      strLevel: 2,
      page: {
        records: [
        ],
      },
    }
  );
  Mock.add(
    "/system/business/dict/getDictionaryTreeDataWithDefaultApp",
    RequestMethod.get,
    {
      dictionary: {
        name: "业务词典",
        icon: "/static/image/root_16.png",
        open: true,
      },
    }
  );
  Mock.add("/system/dictDtl/list", RequestMethod.get, {
    strLevel: 2,
    dict: {
    },
    page: {
      records: [
        {
        },
      ],
    },
  });
  Mock.add("/system/business/dict/list", RequestMethod.get, {
    page: {
      records: [
        },
      ],
      total: 8,
      size: 10,
      current: 1,
      orders: [],
      searchCount: true,
      countId: null,
      maxLimit: null,
      pages: 1,
    },
    moduleId: "1659808564790636545",
  });
  Mock.add("/system/business/dict/getById", RequestMethod.get, {
    }
  });

  await wrapper.get("div.relative button").trigger("click");
  await nextTick();
  await wrapper.vm.$nextTick();
  await wrapper.find("span[data-span=A-1]").trigger("click");
  await nextTick();
  await wrapper.vm.$nextTick();
  const secondDom = wrapper.find("span[data-span=A1659808564790636545]");
  secondDom.wrapperElement = secondDom.wrapperElement.parentNode.children[0];
  await secondDom.trigger("click");
  await nextTick();
  await wrapper.vm.$nextTick();
  await wrapper
    .find("span[data-span=AK7I1EPNPJ3CN6KCTK1K0A21IDB08S0A5]")
    .trigger("click");

  await nextTick();
  await wrapper.vm.$nextTick();

  await wrapper.find("button.confirm").trigger("click");

});