寻宝:增加先搜索再招募的测试用例;修复这种情况下的匹配 bug

This commit is contained in:
liangtongchuan
2021-02-19 12:18:24 +08:00
parent 28610f7b88
commit 5cda61fc7c
2 changed files with 72 additions and 30 deletions

View File

@@ -122,12 +122,12 @@ export class ComBattleHandler {
// 检查是否有正在匹配的符合要求的玩家 // 检查是否有正在匹配的符合要求的玩家
let teammates = await getTeamSearchByQuality(goodData.quality, comBtlRangeByLv(goodData.lvLimited)); let teammates = await getTeamSearchByQuality(goodData.quality, comBtlRangeByLv(goodData.lvLimited));
if (teammates) { if (teammates && teammates.length) {
for (let teammate of teammates) { for (let teammate of teammates) {
const { roleId: teammateRoleId } = teammate; const { roleId: teammateRoleId } = teammate;
const st = getValidTeammateRoleSt(teammateRoleId, roleIds, ceLimit, goodData.quality); const st = await getValidTeammateRoleSt(teammateRoleId, roleIds, ceLimit, goodData.quality);
if (!st) continue; if (!st) continue;
rmRoleFromQueue(teammateRoleId, sid, COM_BTL_QUALITY, null); // 匹配成功后删除redis中该用户的匹配记录 await rmRoleFromQueue(teammateRoleId, sid, COM_BTL_QUALITY, null); // 匹配成功后删除redis中该用户的匹配记录
roleStatus.push(st); roleStatus.push(st);
roleIds.push(teammateRoleId); roleIds.push(teammateRoleId);
} }
@@ -152,7 +152,7 @@ export class ComBattleHandler {
} }
let uids = []; let uids = [];
uids.push({roleId, sid}); uids.push({roleId, sid});
if (teammates) { if (teammates && teammates.length) {
for (let teammate of teammates) { for (let teammate of teammates) {
let { roleId, sid } = teammate; let { roleId, sid } = teammate;
uids.push({uid: roleId, sid}); uids.push({uid: roleId, sid});

View File

@@ -1,3 +1,4 @@
import { indexOf } from 'underscore';
import { COM_TEAM_STATUS, DEFAULT_HEROES } from './../../shared/consts/consts'; import { COM_TEAM_STATUS, DEFAULT_HEROES } from './../../shared/consts/consts';
import { Client } from './Client'; import { Client } from './Client';
import { COM_BTL_QUALITY } from './../app/consts/constModules/itemConst'; import { COM_BTL_QUALITY } from './../app/consts/constModules/itemConst';
@@ -5,9 +6,47 @@ import 'mocha';
import { PinusWSClient } from 'pinus-robot-plugin'; import { PinusWSClient } from 'pinus-robot-plugin';
import { expect } from 'chai'; import { expect } from 'chai';
import { checkDisplayItems, checkSuccessResponse } from './CheckPatten'; import { checkDisplayItems, checkSuccessResponse } from './CheckPatten';
/**
* @description 组队后的战斗过程:队长开战 -> 设置阵容 -> 对默认敌人造成伤害 -> 获取战斗状态 -> 结算
* @param {PinusWSClient} capClient
* @param {string} teamCode
* @param {Mocha.Done} done
*/
function comBattleProcess(capClient: PinusWSClient, teamCode: string, done: Mocha.Done) {
capClient.request('battle.comBattleHandler.startBattle', { teamCode }, (startRes) => {
checkSuccessResponse(startRes, false);
capClient.request('battle.comBattleHandler.setupHeroes', { teamCode, heroes: DEFAULT_HEROES}, (setupRes) => {
checkSuccessResponse(setupRes, false);
const bossHurts = [2001, 2002, 2003, 2004, 2005].map(value => {return {dataId: value, hurtHp: -10000}});
capClient.request('battle.comBattleHandler.action', {teamCode, bossHurts, killed: [], curRound: 1}, (actionRes) => {
checkSuccessResponse(actionRes, false);
capClient.request('battle.comBattleHandler.getComBtlStatus', { teamCode }, (statusRes) => {
checkSuccessResponse(statusRes);
expect(statusRes.data.teamInfo).to.be.an('object');
expect(statusRes.data.teamInfo.status).to.equal(COM_TEAM_STATUS.WIN);
capClient.request('battle.comBattleHandler.comBattleEnd', { teamCode }, (endRes) => {
checkSuccessResponse(endRes);
const { battleGoods, teamInfo, actordata, lv, exp, kingExp} = endRes.data;
checkDisplayItems(battleGoods);
expect(teamInfo).to.be.an('object');
expect(actordata).to.be.an('array');
expect(lv).to.be.a('number');
expect(exp).to.be.a('number');
expect(kingExp).to.be.a('number');
done();
});
});
});
})
});
}
describe('寻宝创建队伍', function() { describe('寻宝创建队伍', function() {
let pinusClient: PinusWSClient; let pinusClient: PinusWSClient;
let pinusClientT: PinusWSClient; // 用做测试队友 let pinusClientT: PinusWSClient; // 用做测试队友
let roleInfo;
let roleInfoT;
const createTeamParms = {blueprtId: 33001, pub: true, ceLimit: 0}; const createTeamParms = {blueprtId: 33001, pub: true, ceLimit: 0};
const searchTeamParms = {qualityArr: COM_BTL_QUALITY}; const searchTeamParms = {qualityArr: COM_BTL_QUALITY};
@@ -18,7 +57,9 @@ describe('寻宝创建队伍', function() {
const timer = setInterval(() => { const timer = setInterval(() => {
if (c.client && cT.client) { if (c.client && cT.client) {
pinusClient = c.client; pinusClient = c.client;
roleInfo = c.roleInfo;
pinusClientT = cT.client; pinusClientT = cT.client;
roleInfoT = cT.roleInfo;
clearInterval(timer); clearInterval(timer);
done(); done();
} }
@@ -49,32 +90,7 @@ describe('寻宝创建队伍', function() {
checkSuccessResponse(joinRes); checkSuccessResponse(joinRes);
if (searchRes.data.teamCode === res.data.teamCode) { if (searchRes.data.teamCode === res.data.teamCode) {
const { teamCode } = res.data; const { teamCode } = res.data;
pinusClient.request('battle.comBattleHandler.startBattle', { teamCode }, (startRes) => { comBattleProcess(pinusClient, teamCode, done);
checkSuccessResponse(startRes, false);
pinusClient.request('battle.comBattleHandler.setupHeroes', { teamCode, heroes: DEFAULT_HEROES}, (setupRes) => {
checkSuccessResponse(setupRes, false);
const bossHurts = [2001, 2002, 2003, 2004, 2005].map(value => {return {dataId: value, hurtHp: -1000}});
pinusClient.request('battle.comBattleHandler.action', {teamCode, bossHurts, killed: [], curRound: 1}, (actionRes) => {
checkSuccessResponse(actionRes, false);
pinusClient.request('battle.comBattleHandler.getComBtlStatus', { teamCode }, (statusRes) => {
checkSuccessResponse(statusRes);
expect(statusRes.data.teamInfo).to.be.an('object');
expect(statusRes.data.teamInfo.status).to.equal(COM_TEAM_STATUS.WIN);
pinusClient.request('battle.comBattleHandler.comBattleEnd', { teamCode }, (endRes) => {
checkSuccessResponse(endRes);
const { battleGoods, teamInfo, actordata, lv, exp, kingExp} = endRes.data;
checkDisplayItems(battleGoods);
expect(teamInfo).to.be.an('object');
expect(actordata).to.be.an('array');
expect(lv).to.be.a('number');
expect(exp).to.be.a('number');
expect(kingExp).to.be.a('number');
done();
});
});
});
})
});
} else { } else {
console.warn('未测试到开战情况'); console.warn('未测试到开战情况');
done(); done();
@@ -88,6 +104,32 @@ describe('寻宝创建队伍', function() {
}); });
}); });
it('先搜索再创建队伍的匹配情况', function(done) {
pinusClientT.request('battle.comBattleHandler.searchTeam', searchTeamParms, (searchRes) => {
console.log('searchRes:', searchRes);
checkSuccessResponse(searchRes, false);
if (!searchRes.data) {
pinusClient.request('battle.comBattleHandler.createTeam', createTeamParms, (res) => {
checkSuccessResponse(res);
expect(res.data.teamCode).to.be.a('string');
expect(res.data.roleStatus).to.be.an('array');
res.data.roleStatus.forEach(roleSt => {
expect(roleSt).to.have.all.keys('roleId', 'roleName', 'isCap', 'isFrd', 'headHid', 'sHid', 'topFiveCe', 'lv', 'isRobot', 'heroes', 'killed', 'totalDmg', 'frdRatio');
});
const roleIds = res.data.roleStatus.map(roleSt => { return roleSt.roleId });
if (roleIds.indexOf(roleInfoT.roleId) === -1) {
console.warn('未测试到先搜索后招募的组队情况');
done();
}
comBattleProcess(pinusClient, res.data.teamCode, done);
});
} else {
console.warn('未测试到先搜索后招募的组队情况');
done();
}
});
});
it('创建队伍并解散', function(done) { it('创建队伍并解散', function(done) {
pinusClient.request('battle.comBattleHandler.createTeam', createTeamParms, (res) => { pinusClient.request('battle.comBattleHandler.createTeam', createTeamParms, (res) => {
checkSuccessResponse(res); checkSuccessResponse(res);