From 7d85d332df7708244d4f7572990a4f7164b51a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B4=AA=E6=B4=AA?= <2498601771@qq.com> Date: Tue, 31 Jan 2023 15:06:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=84=E5=8D=95=E6=B5=8Bdemo?= =?UTF-8?q?=EF=BC=88=E5=90=8C=E4=B8=80url=E4=B8=8D=E5=90=8C=E5=85=A5?= =?UTF-8?q?=E5=8F=82=E7=9A=84axios=E8=AF=B7=E6=B1=82=E5=86=85=E5=8C=85?= =?UTF-8?q?=E5=90=AB=E5=A4=9A=E4=B8=AA=E4=B8=8D=E5=90=8Curl=E7=9A=84axios?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Test.vue | 24 +++++++++++++++++++++++- test/Test.test.js | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/Test.vue b/src/Test.vue index 005c1858..5cd30689 100644 --- a/src/Test.vue +++ b/src/Test.vue @@ -48,7 +48,11 @@ export default { tableTitles: [ { label: 'Name', prop: 'name' }, { label: 'Age', prop: 'age' } - ] + ], + mergeRequestData0: null, + mergeRequestData1: null, + mergeRequestChildData0: null, + mergeRequestChildData1: null } }, methods: { @@ -76,6 +80,24 @@ export default { this.differentParamData1 = response.data }) }, + /** + * 同一url,不同入参的axios请求内包含多个不同url请求的demo + * @returns {Promise} + */ + async mergeRequest () { + axios.get('/api/differentParam', { params: { name: 0 } }).then(response => { + this.mergeRequestData0 = response.data + }) + axios.get('/api/differentParam', { params: { name: 1 } }).then(response => { + this.mergeRequestData1 = response.data + axios.get('/api/getChildId').then(response1 => { + this.mergeRequestChildData0 = response1.data + }) + axios.get('/api/getChildTitle').then(response2 => { + this.mergeRequestChildData1 = response2.data + }) + }) + }, async setIndexedDBValue () { await indexedDBUtils.selectTable('test').put({ id: 1, name: 'test' }) }, diff --git a/test/Test.test.js b/test/Test.test.js index a4057f63..f56d1fcc 100644 --- a/test/Test.test.js +++ b/test/Test.test.js @@ -16,6 +16,10 @@ const mockTitle = { data: 'title2' } const mockCount = { data: 999 } const mockDifferentParam0 = { data: 0 } const mockDifferentParam1 = { data: 1 } +const mergeRequestParam0 = { data: 0 } +const mergeRequestParam1 = { data: 1 } +const mergeRequestChildParam0 = { data: 0 } +const mergeRequestChildParam1 = { data: 1 } describe('单元测试demo', () => { test('Vue组件--点击按钮后count的值+1', async () => { @@ -141,6 +145,36 @@ describe('单元测试demo', () => { expect(wrapper.vm.differentParamData0).toBe(0) expect(wrapper.vm.differentParamData1).toBe(1) }) + test('Vue组件--axios请求内包含多个不同url的组合请求', async () => { + require('vue-router').useRoute.mockReturnValue({ query: {} }) + require('vue-router').useRouter.mockReturnValue({ currentRoute: { value: { path: '/' } } }) + // 模拟axios返回数据 + axios.get.mockResolvedValueOnce(mergeRequestParam0) + axios.get.mockResolvedValueOnce(mergeRequestParam1) + + axios.get.mockImplementation(url => { + switch (url) { + case '/api/getChildId': + return Promise.resolve(mergeRequestChildParam0) + case '/api/getChildTitle': + return Promise.resolve(mergeRequestChildParam1) + } + }) + + // 加载vue组件,获得实例 + const wrapper = mount(Test, { + global: { + plugins: [ElementPlus] + } + }) + await wrapper.vm.mergeRequest() + await wrapper.vm.$nextTick(() => { + expect(wrapper.vm.mergeRequestData0).toBe(0) + expect(wrapper.vm.mergeRequestData1).toBe(1) + expect(wrapper.vm.mergeRequestChildData0).toBe(0) + expect(wrapper.vm.mergeRequestChildData1).toBe(1) + }) + }) test('Vue组件--模拟indexedDB操作', async () => { require('vue-router').useRoute.mockReturnValue({ query: {} }) require('vue-router').useRouter.mockReturnValue({ currentRoute: { value: { path: '/' } } })