| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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)
- })
|