2つのレコードを返すコントロールがあります。
{
"value": [
{
"ID": 5,
"Pupil": 1900031265,
"Offer": false,
},
{
"ID": 8,
"Pupil": 1900035302,
"Offer": false,
"OfferDetail": ""
}
]
}
2つのレコードが返されたことをPostman経由でテストする必要があります。ここや他の場所で見つけたさまざまな方法を試しましたが、運はありません。以下のコードを使用すると、予想される答えが返されません。
responseJson = JSON.parse(responseBody);
var list = responseBody.length;
tests["Expected number"] = list === undefined || list.length === 2;
この時点で、テスト中のAPIに問題があるのか、コーディングに問題があるのかわかりません。返されたアイテムをループしてみましたが、機能していません。誰かがアドバイスしてもらえますか-私はjavascriptに慣れていないので、私の問題の明白な原因があると期待していますが、それを見ることはできません。どうもありがとう。
JSONを修正してください。これを試してください。
var test = JSON.parse('{"value": [{"ID": 5,"Pupil": 1900031265,"Offer": false},{"ID": 8,"Pupil": 1900035302,"Offer": false,"OfferDetail": ""}] }')
test.value.length; // 2
これが私が理解した最も簡単な方法です:
pm.expect(Object.keys(pm.response.json()).length).to.eql(18);
それらを変数に合わせてカスタマイズする必要はありません。コピーして貼り付け、「18」を希望する数値に調整します。
応答本文は、オブジェクトの長さを見つけることができないオブジェクトですtry
var list = responseJson.value.length;
私は同様の問題を抱えていました。特定の数のアレイメンバーをテストするために使用したのは次のとおりです。
responseJson = JSON.parse(responseBody);
tests["Response Body = []"] = responseJson.length === valueYouAreCheckingFor;
取得している値を確認するには、印刷して、郵便配達員コンソールを確認します。
console.log(responseJson.length);
まず、応答をjsonに変換し、値のパスを見つける必要があります。値は配列です。 length関数を呼び出して、そこにあるオブジェクトの数を取得し、予想されるサイズを確認する必要があります
pm.test("Validate value count", function () {
pm.expect(pm.response.json().value.length).to.eq(2);
});
JSON内の配列の長さを検証するときに、同様の問題に直面していました。以下のスニペットが解決に役立ちます。
responseJson = JSON.parse(responseBody);
var list = responseBody.length;
tests["Expected number"] = responseJson.value.length === list;