UNPKG

v-track

Version:

一个基于Vue指令的埋点插件

53 lines (48 loc) 1.19 kB
/* * @Author: 宋慧武 * @Date: 2019-04-09 19:08:17 * @Last Modified by: 宋慧武 * @Last Modified time: 2019-04-13 22:30:28 */ import Vue from "vue"; import VTrack from "@/"; import { mount, createLocalVue } from "@vue/test-utils"; const localVue = createLocalVue(); const mockTrackAction = jest.fn(); const trackEvents = { 18015: mockTrackAction }; const TrackClickAsync = Vue.extend({ template: ` <div v-track:18015.click.async="{ fetchRest, rest }"></div> `, data() { return { rest: null }; }, methods: { async fetchRest() { const response = await Promise.resolve({ data: "success" }); this.rest = response.data; } } }); localVue.use(VTrack, { trackEvents }); describe("TrackClickAsync", () => { it("确保异步的事件返回成功之后再上报埋点", done => { const wrapper = mount(TrackClickAsync, { localVue }); wrapper.trigger("click"); expect(wrapper.vm.rest).toBeNull(); expect(mockTrackAction).toBeCalledTimes(0); wrapper.vm.$nextTick(() => { expect(wrapper.vm.rest).toBe("success"); expect(mockTrackAction).toBeCalledTimes(1); done(); }); }); });