|
|
@@ -0,0 +1,62 @@
|
|
|
+import test from 'node:test'
|
|
|
+import assert from 'node:assert/strict'
|
|
|
+import fs from 'node:fs'
|
|
|
+import path from 'node:path'
|
|
|
+import vm from 'node:vm'
|
|
|
+
|
|
|
+const practiceFile = path.resolve('pagesMy/practice.vue')
|
|
|
+
|
|
|
+const flushPromises = () => new Promise(resolve => setImmediate(resolve))
|
|
|
+
|
|
|
+function mountPracticePage () {
|
|
|
+ const source = fs.readFileSync(practiceFile, 'utf8')
|
|
|
+ const script = source.match(/<script setup[^>]*>([\s\S]*?)<\/script>/)[1]
|
|
|
+ .replace(/^\s*import\s+.*$/gm, '')
|
|
|
+
|
|
|
+ const lifecycle = {}
|
|
|
+ const requests = []
|
|
|
+ const api = {
|
|
|
+ get (url, params) {
|
|
|
+ requests.push({ url, params: { ...params } })
|
|
|
+ if (url === '/core/family/member/page') {
|
|
|
+ return Promise.resolve({ data: { code: 0, data: { list: [{ id: 'member-1', name: '小明' }] } } })
|
|
|
+ }
|
|
|
+ return Promise.resolve({ data: { code: 0, data: { list: [] } } })
|
|
|
+ },
|
|
|
+ post () {
|
|
|
+ return Promise.resolve({ data: { code: 0, data: {} } })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ vm.runInNewContext(script, {
|
|
|
+ ref: value => ({ value }),
|
|
|
+ getCurrentInstance: () => ({ proxy: { $api: api, $showToast: () => {} } }),
|
|
|
+ onMounted: callback => { lifecycle.mounted = callback },
|
|
|
+ onShow: callback => { lifecycle.show = callback },
|
|
|
+ uni: {
|
|
|
+ getStorageSync: key => key === 'userInfo' ? JSON.stringify({ id: 'user-1' }) : '',
|
|
|
+ navigateTo: () => {}
|
|
|
+ },
|
|
|
+ Date,
|
|
|
+ console
|
|
|
+ })
|
|
|
+
|
|
|
+ return { lifecycle, requests }
|
|
|
+}
|
|
|
+
|
|
|
+test('申领社会实践记录页面每次显示时重新查询可申领数据', async () => {
|
|
|
+ const { lifecycle, requests } = mountPracticePage()
|
|
|
+
|
|
|
+ assert.equal(typeof lifecycle.show, 'function', '页面必须注册 onShow 刷新处理')
|
|
|
+ lifecycle.show()
|
|
|
+ await flushPromises()
|
|
|
+ await flushPromises()
|
|
|
+
|
|
|
+ assert.deepEqual(requests.map(item => item.url), [
|
|
|
+ '/core/family/member/page',
|
|
|
+ '/core/social/practice/record/claimPage'
|
|
|
+ ])
|
|
|
+ assert.equal(requests[1].params.userId, 'user-1')
|
|
|
+ assert.equal(requests[1].params.memberId, 'member-1')
|
|
|
+ assert.equal(requests[1].params.page, 1)
|
|
|
+})
|