3.4 测试数据库新增
在上面的案例中,我们完成了查找,但是因为没有数据,所以无法知道查询功能是否真的正常。因此接下来我们就要陆续完成:增删改查的操作了。首先,我们来看一下新增
- 在weaponSkinModel.js文件中,增加新增数据的js代码
// model/weaponSkinModel.js(新增)
// 👉 第2个功能:新增单条数据
async function addWeaponSkin(weaponSkin) {
const { name, baseWeapon, skinName, price, appearance, category, stock } = weaponSkin;
try {
const [result] = await pool.execute(
`INSERT INTO weapon_skins
[name, baseWeapon, skinName || '', price, appearance || '未知', category || '武器皮肤', stock || 0](name, baseWeapon, skinName, price, appearance, category, stock) VALUES (?, ?, ?, ?, ?, ?, ?)`,
);
return {
success: true,
insertId: result.insertId,
message: '新增成功'
};
} catch (error) {
console.error('❌ 新增数据失败:', error.message);
throw error;
}
}
// 更新暴露(添加新功能)
module.exports = {
getAllWeaponSkins,
addWeaponSkin // 新增
};
- 接下来我们就可以在index.js文件中测试一下了
// index.js(新增测试函数)
// 👉 测试 2:新增单条数据(对应 addWeaponSkin 功能)
async function testAddWeaponSkin() {
console.log('===== 开始测试:新增单条数据 =====');
// 测试用数据
const testData = {
name: 'AK-47 | 火神 (崭新出厂)',
baseWeapon: 'AK-47',
skinName: '火神',
price: 1599.99,
appearance: '崭新出厂',
category: '武器皮肤',
stock: 8
};
try {
await testPoolConnection();
const result = await weaponSkinModel.addWeaponSkin(testData);
console.log('新增成功!结果:', result);
// 额外验证:查询刚新增的数据
const newData = await weaponSkinModel.getWeaponSkinById(result.insertId);
console.log('验证新增数据:', newData);
} catch (error) {
console.log('新增失败!原因:', error.message);
}
console.log('===== 测试结束:新增单条数据 =====\n');
}
// 👉 执行当前测试(注释掉之前的,只运行这一个)
// testGetAllWeaponSkins();
testAddWeaponSkin();
控制台打印输出正常
此时,我们放开index.js里面的testGetAllWeaponSkins单元测试,做一下查询,可以看到查到数据了
案例练习
● 在上述新增的功能中,尝试不传入name,或者价格为负数,观察是否有错误提示,如果没有请完善提示信息