一、对response进行断言,判断是否符合预期,可以统一进行处理
/**
* 对两个对象之间做正则比较
* arr为数组,abjb为json对象
* @type {{typeJudge?: function(*=): string}}
*/
const type = require('./typejudge')
exports.compare = function (arr, objb) {
let msg = '';
let flag = true;
if (type.typeJudge(arr) !== 'Array') {
(type.typeJudge(arr) !== 'Array').should.be.false("First parameter's type should be Array");
}
if (arr.length === 0) {
(arr.length === 0).should.be.false("parameter can't be empty");
} else {
for (let i = 0; i < arr.length; i++) {
let target = JSON.stringify(arr[i])
.replace('{', '')
.replace('}', '')
.split(',');
for (let o of target) {
let reg = new RegExp(o);
if (reg.test(JSON.stringify(objb)) !== true) {
msg += ` ${o}, but nothing to be matched\n`;
flag = false;
}
}
if (flag === false) {
(flag === false).should.be.false(msg);
}
}
}
}
二、第一个参数是数组,第二个参数的请求的response
如果用例中的case中满足一定的格式,就会去判断是否符合预期,示例格式如下
/**
* 登录接口case
* userList数组中每个对象都是一条case
* res数组中存放预期值
* @type {[{res: [{errorMsg: null}, {success: boolean}], password: string, userName: string}, {res: *[], password: string, userName: string}, {res: *[], password: string, userName: string}, {res: *[], password: string, userName: string}]}
*/
exports.userList = [
{userName: 'user', password: 'test123', res: [{errorMsg:null},{success:true}]}
];
满足上述示例userList中的res数组格式,将res数组传到compare的第一个参数,将实际请求的response放到第二个参数即可
res中的多个字段,可以存在一个对象中,也可以分成多个对象,如下所示,效果是一样的
res: [{errorMsg:null},{success:true}]
res: [{errorMsg:null,success:true}]