मेरे पास इसी तरह का एक अनुरोध है

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

प्रतिक्रिया है

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

मैं परीक्षण करना चाहता हूं कि क्या अनुमत एबीसी अनुरोधित एबीसी के समान है। इसका मतलब यह है कि मैं यह कहना चाहता हूं कि प्रतिक्रिया में सभी महत्वपूर्ण मूल्य जोड़े अनुरोध किए गए मामले में या जिस क्रम में वे प्रतिक्रिया में सूचीबद्ध हैं, वैसे ही समान हैं। प्रदान किया गया उदाहरण एक पास परिदृश्य होगा। मैंने कोशिश की

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);    
});

लेकिन मुझे एक त्रुटि मिल रही है

अभिकथन त्रुटि: अपेक्षित {ऑब्जेक्ट (XYZ, ZXC...)} को गहराई से बराबर करने के लिए {ऑब्जेक्ट (XYZ, Qwe,...)}

1
Rohith R Nair 16 सितंबर 2020, 08:28

2 जवाब

सबसे बढ़िया उत्तर

यह काम करेगा - सुनिश्चित नहीं है कि 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], [b]) => a.localeCompare(b);
const transformer = obj => Object.entries(obj).map(([k, v]) => [k.toUpperCase(), 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);    
});

आशा है कि अब समझ में आता है

2
Jaromanda X 16 सितंबर 2020, 09:59

आप सभी कुंजियों को छोटा करने के लिए फ़ंक्शन का उपयोग कर सकते हैं, जैसे 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);
});
0
Christian Baumann 16 सितंबर 2020, 09:00