From 5cda61fc7c891f99f94c70d5786f15a77764b444 Mon Sep 17 00:00:00 2001 From: liangtongchuan Date: Fri, 19 Feb 2021 12:18:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BB=E5=AE=9D=EF=BC=9A=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=85=88=E6=90=9C=E7=B4=A2=E5=86=8D=E6=8B=9B=E5=8B=9F=E7=9A=84?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B=EF=BC=9B=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=BF=99=E7=A7=8D=E6=83=85=E5=86=B5=E4=B8=8B=E7=9A=84=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../battle/handler/comBattleHandler.ts | 8 +- game-server/test/comBattle.test.ts | 94 ++++++++++++++----- 2 files changed, 72 insertions(+), 30 deletions(-) diff --git a/game-server/app/servers/battle/handler/comBattleHandler.ts b/game-server/app/servers/battle/handler/comBattleHandler.ts index 842685271..3d9d41b98 100644 --- a/game-server/app/servers/battle/handler/comBattleHandler.ts +++ b/game-server/app/servers/battle/handler/comBattleHandler.ts @@ -122,12 +122,12 @@ export class ComBattleHandler { // 检查是否有正在匹配的符合要求的玩家 let teammates = await getTeamSearchByQuality(goodData.quality, comBtlRangeByLv(goodData.lvLimited)); - if (teammates) { + if (teammates && teammates.length) { for (let teammate of teammates) { const { roleId: teammateRoleId } = teammate; - const st = getValidTeammateRoleSt(teammateRoleId, roleIds, ceLimit, goodData.quality); + const st = await getValidTeammateRoleSt(teammateRoleId, roleIds, ceLimit, goodData.quality); if (!st) continue; - rmRoleFromQueue(teammateRoleId, sid, COM_BTL_QUALITY, null); // 匹配成功后删除redis中该用户的匹配记录 + await rmRoleFromQueue(teammateRoleId, sid, COM_BTL_QUALITY, null); // 匹配成功后删除redis中该用户的匹配记录 roleStatus.push(st); roleIds.push(teammateRoleId); } @@ -152,7 +152,7 @@ export class ComBattleHandler { } let uids = []; uids.push({roleId, sid}); - if (teammates) { + if (teammates && teammates.length) { for (let teammate of teammates) { let { roleId, sid } = teammate; uids.push({uid: roleId, sid}); diff --git a/game-server/test/comBattle.test.ts b/game-server/test/comBattle.test.ts index a7982393c..ad8703426 100644 --- a/game-server/test/comBattle.test.ts +++ b/game-server/test/comBattle.test.ts @@ -1,3 +1,4 @@ +import { indexOf } from 'underscore'; import { COM_TEAM_STATUS, DEFAULT_HEROES } from './../../shared/consts/consts'; import { Client } from './Client'; import { COM_BTL_QUALITY } from './../app/consts/constModules/itemConst'; @@ -5,9 +6,47 @@ import 'mocha'; import { PinusWSClient } from 'pinus-robot-plugin'; import { expect } from 'chai'; 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() { let pinusClient: PinusWSClient; let pinusClientT: PinusWSClient; // 用做测试队友 + let roleInfo; + let roleInfoT; const createTeamParms = {blueprtId: 33001, pub: true, ceLimit: 0}; const searchTeamParms = {qualityArr: COM_BTL_QUALITY}; @@ -18,7 +57,9 @@ describe('寻宝创建队伍', function() { const timer = setInterval(() => { if (c.client && cT.client) { pinusClient = c.client; + roleInfo = c.roleInfo; pinusClientT = cT.client; + roleInfoT = cT.roleInfo; clearInterval(timer); done(); } @@ -49,32 +90,7 @@ describe('寻宝创建队伍', function() { checkSuccessResponse(joinRes); if (searchRes.data.teamCode === res.data.teamCode) { const { teamCode } = res.data; - pinusClient.request('battle.comBattleHandler.startBattle', { teamCode }, (startRes) => { - 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(); - }); - }); - }); - }) - }); + comBattleProcess(pinusClient, teamCode, done); } else { console.warn('未测试到开战情况'); 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) { pinusClient.request('battle.comBattleHandler.createTeam', createTeamParms, (res) => { checkSuccessResponse(res);