| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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)
- })
- test('查看社会实践详情返回后姓名筛选请求不复用记录分页', async () => {
- const { lifecycle, requests } = mountPracticePage()
- lifecycle.show()
- await flushPromises()
- await flushPromises()
- lifecycle.show()
- await flushPromises()
- await flushPromises()
- const memberRequests = requests.filter(item => item.url === '/core/family/member/page')
- assert.equal(memberRequests.length, 2)
- assert.deepEqual(memberRequests.map(item => item.params.page), [1, 1])
- assert.deepEqual(memberRequests.map(item => item.params.limit), [-1, -1])
- })
|