寻宝:增加先搜索再招募的测试用例;修复这种情况下的匹配 bug
This commit is contained in:
@@ -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});
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user