/** * 邀请参数解析测试工具 */ import { parseInviteParams } from './invite' /** * 测试不同格式的邀请参数解析 */ export function testInviteParamsParsing() { console.log('=== 开始测试邀请参数解析 ===') // 测试用例1: uid_格式 const testCase1 = { scene: 'uid_33103', path: 'pages/index/index' } console.log('测试用例1 - uid格式:') console.log('输入:', testCase1) const result1 = parseInviteParams(testCase1) console.log('输出:', result1) console.log('预期: { inviter: "33103", source: "qrcode", t: "..." }') console.log('结果:', result1?.inviter === '33103' && result1?.source === 'qrcode' ? '✅ 通过' : '❌ 失败') console.log('') // 测试用例2: 传统格式 const testCase2 = { scene: 'inviter=12345&source=share&t=1640995200000', path: 'pages/index/index' } console.log('测试用例2 - 传统格式:') console.log('输入:', testCase2) const result2 = parseInviteParams(testCase2) console.log('输出:', result2) console.log('预期: { inviter: "12345", source: "share", t: "1640995200000" }') console.log('结果:', result2?.inviter === '12345' && result2?.source === 'share' ? '✅ 通过' : '❌ 失败') console.log('') // 测试用例3: 数字类型的scene const testCase3 = { scene: 1047, // 数字类型 path: 'pages/index/index' } console.log('测试用例3 - 数字类型scene:') console.log('输入:', testCase3) const result3 = parseInviteParams(testCase3) console.log('输出:', result3) console.log('预期: null (因为不是uid_格式)') console.log('结果:', result3 === null ? '✅ 通过' : '❌ 失败') console.log('') // 测试用例4: 空参数 const testCase4 = {} console.log('测试用例4 - 空参数:') console.log('输入:', testCase4) const result4 = parseInviteParams(testCase4) console.log('输出:', result4) console.log('预期: null') console.log('结果:', result4 === null ? '✅ 通过' : '❌ 失败') console.log('') // 测试用例5: 无效的uid格式 const testCase5 = { scene: 'uid_abc', path: 'pages/index/index' } console.log('测试用例5 - 无效uid格式:') console.log('输入:', testCase5) const result5 = parseInviteParams(testCase5) console.log('输出:', result5) console.log('预期: null (因为abc不是数字)') console.log('结果:', result5 === null ? '✅ 通过' : '❌ 失败') console.log('') // 测试用例6: referrer参数 const testCase6 = { referrer: '99999', path: 'pages/index/index' } console.log('测试用例6 - referrer参数:') console.log('输入:', testCase6) const result6 = parseInviteParams(testCase6) console.log('输出:', result6) console.log('预期: { inviter: "99999", source: "link" }') console.log('结果:', result6?.inviter === '99999' && result6?.source === 'link' ? '✅ 通过' : '❌ 失败') console.log('') console.log('=== 邀请参数解析测试完成 ===') } /** * 模拟小程序启动场景测试 */ export function simulateMiniProgramLaunch() { console.log('=== 模拟小程序启动场景 ===') // 模拟通过小程序码启动 const qrcodeOptions = { path: 'pages/index/index', scene: 'uid_33103', shareTicket: undefined, referrerInfo: {} } console.log('模拟小程序码启动:') console.log('启动参数:', qrcodeOptions) const qrcodeResult = parseInviteParams(qrcodeOptions) console.log('解析结果:', qrcodeResult) if (qrcodeResult && qrcodeResult.inviter === '33103') { console.log('✅ 小程序码邀请解析成功') return qrcodeResult } else { console.log('❌ 小程序码邀请解析失败') return null } } /** * 验证邀请参数格式 */ export function validateInviteParams(params: any) { console.log('=== 验证邀请参数格式 ===') console.log('参数:', params) if (!params) { console.log('❌ 参数为空') return false } if (!params.inviter) { console.log('❌ 缺少inviter字段') return false } if (isNaN(parseInt(params.inviter))) { console.log('❌ inviter不是有效数字') return false } if (!params.source) { console.log('❌ 缺少source字段') return false } console.log('✅ 邀请参数格式验证通过') return true } /** * 运行所有测试 */ export function runAllTests() { console.log('🚀 开始运行所有邀请参数测试') testInviteParamsParsing() const simulationResult = simulateMiniProgramLaunch() if (simulationResult) { validateInviteParams(simulationResult) } console.log('🎉 所有测试完成') }