/** * 测试辅助函数集合 */ const fs = require('fs'); const path = require('path'); const faker = require('faker'); /** * 生成随机用户数据 * @returns {Object} 包含随机用户信息的对象 */ function generateRandomUser() { return { username: faker.internet.userName(), email: faker.internet.email(), password: faker.internet.password(10), firstName: faker.name.firstName(), lastName: faker.name.lastName(), phone: faker.phone.phoneNumber(), address: { street: faker.address.streetAddress(), city: faker.address.city(), zipCode: faker.address.zipCode(), country: faker.address.country() } }; } /** * 等待指定时间 * @param {number} ms 等待的毫秒数 * @returns {Promise} */ function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } /** * 从文件加载测试数据 * @param {string} filePath 数据文件路径 * @returns {Object} 测试数据对象 */ function loadTestData(filePath) { const fullPath = path.resolve(__dirname, '../../data', filePath); try { const data = fs.readFileSync(fullPath, 'utf8'); return JSON.parse(data); } catch (error) { console.error(`Error loading test data from ${fullPath}:`, error); return {}; } } /** * 生成唯一ID * @param {string} prefix ID前缀 * @returns {string} 唯一ID */ function generateUniqueId(prefix = 'test') { return `${prefix}_${Date.now()}_${Math.floor(Math.random() * 1000)}`; } /** * 格式化日期 * @param {Date} date 日期对象 * @param {string} format 格式字符串 * @returns {string} 格式化后的日期字符串 */ function formatDate(date = new Date(), format = 'YYYY-MM-DD') { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return format .replace('YYYY', year) .replace('MM', month) .replace('DD', day); } module.exports = { generateRandomUser, sleep, loadTestData, generateUniqueId, formatDate };