我才刚刚开始接触jest。网上有很多API。我就是自己写项目,记录下来。有问题可以留言,一起学习emit事件页面:handleClose(){this.$emit('update:isShow',false)},jest:test('handleClose',()=>{wrapper.vm.handleClose()expect(wrapper.emitted().update).toBeFalsy()})事件总线事件总线页面:read(){this.$message.success('操作成功')this.$EventsBus.$emit('headerMsgTips')this.$EventsBus.$emit('unReadySendMsg')this.msgPageNamber=1this.msgList=[]this.getAllMessageList()}jest:const$message={错误:jest.fn(),警告:jest.fn(),成功:jest.fn()}constwrapper=mount(allMsgList,{localVue,data(){return{}},router,mocks:{$message,$EventsBus:{$emit:jest.fn()}}})//======test('read',async()=>{jest.mock('@/api/workBeanch/index.js')msg??Api.checkMessageAllRead.mockResolvedValue({code:1})jest.spyOn(wrapper.vm,'getAllMessageList')awaitwrapper.vm.read()Vue.nextTick()expect(wrapper.vm.$message.success.mock.calls[0][0]).toBe('操作成功')expect(wrapper.vm.msgPageNamber).toBe(1)expect(wrapper.vm.msgList).toEqual([])expect(wrapper.vm.$EventsBus.$emit).toHaveBeenCalledTimes(2)expect(wrapper.vm.getAllMessageList).toBeCalledTimes(1)})路由跳转路由器+窗口api页面:goBmsDetail(id){letrouteData=this.$router.resolve({path:'/caseDetail/bmsDetail'+`?id=${id}`})window.open(routeData.href,`/caseDetail/bmsDetail?id=${id}`)},jest:test('goBmsDetail',()=>{deletewindow.location//这里需要重写,方便后面mockingwindow.location={reload:jest.fn()}window.location.reload=jest.fn()window.open=jest.fn()constspy=jest.spyOn(wrapper.vm.$router,'resolve')wrapper.vm.goBmsDetail(123)expect(spy.mock.calls[0][0].path).toEqual('/caseDetail/bmsDetail?id=123')expect(window.open).toBeCalledTimes(1)})
