微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在邮递员中,无论数组大小写或顺序如何,如何检查响应中的值是否与请求中的值相同?

如何解决在邮递员中,无论数组大小写或顺序如何,如何检查响应中的值是否与请求中的值相同?

我有类似的请求

{
    "Name":"123","Age":"1234","Phone":"12345","RequestedABC":{"XYZ":"111abc","Qwe":"222abc","ZXC":"333def"}
}

响应为

{
    "Name": "123","AllowedABC": {
        "XYZ": "111abc","ZXC": "333def","QWE": "222abc",}
}

我要测试允许的ABC是否与请求的ABC相同。这意味着我想断言响应中的所有键值对都与所请求的键值对相同​​,无论它们在响应中列出的情况或顺序如何。提供的示例将是通过场景。 我尝试过

var body = JSON.parse(request.data);
var jsonData = JSON.parse(responseBody);
pm.test("Granted ABC is same as requested ABCTest",() => {    
    pm.expect(jsonData.AllowedABC).to.eql(body.RequestedABC);    
});

但是我遇到了错误

AssertionError:期望{Object(XYZ,ZXC ...)}达到高度相等 {Object(XYZ,Qwe,...)}

解决方法

这将起作用-不确定to.eql如何与对象一起工作,但这会导致测试字符串代替

const responseData = {
    "Name": "123","AllowedABC": {
        "XYZ": "111abc","ZXC": "333def","QWE": "222abc",}
}
const requestData = {
    "Name":"123","Age":"1234","Phone":"12345","RequestedABC":{"XYZ":"111abc","Qwe":"222abc","ZXC":"333def"}
};

const sorter = ([a],[b]) => a.localeCompare(b);
const transformer = obj => Object.entries(obj).map(([k,v]) => [k.toUpperCase(),v.toUpperCase()]).sort(sorter).join();

const requestABC = transformer(requestData.RequestedABC);
const responseABC = transformer(responseData.AllowedABC);

console.log(requestABC);
console.log(responseABC);
console.log(requestABC === responseABC);

在您的代码中,您会这样做

var body = JSON.parse(request.data);
var jsonData = JSON.parse(responseBody);

const sorter = ([a],v.toUpperCase()]).sort(sorter).join();

const requestABC = transformer(body.RequestedABC);
const responseABC = transformer(jsonData.AllowedABC);

pm.test("Granted ABC is same as requested ABCTest",() => {    
  pm.expect(responseABC ).to.eql(requestABC);    
});

希望现在有意义

,

您可以使用函数将所有键都小写,例如keysToLowerCase(obj)https://gist.github.com/radutta/4480e8292372da56b426f7a4c65f8774),然后测试小写的对象:

let allowedAbcLowercase = keysToLowerCase(jsonData.AllowedABC);
let requestedabcLowercase = keysToLowerCase(body.RequestedABC);

pm.test("Granted ABC is same as requested ABCTest",() => {
    pm.expect(allowedAbcLowercase).to.eql(requestedabcLowercase);
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。