web-dev-qa-db-ja.com

JavaScriptとPostmanを使用してJSON配列のレコードをカウントする

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に慣れていないので、私の問題の明白な原因があると期待していますが、それを見ることはできません。どうもありがとう。

11
Chrissi

JSONを修正してください。これを試してください。

var test = JSON.parse('{"value": [{"ID": 5,"Pupil": 1900031265,"Offer": false},{"ID": 8,"Pupil": 1900035302,"Offer": false,"OfferDetail": ""}] }')

test.value.length; // 2
13
Kaushik

郵便配達員のTestsセクションで、以下を実行します(下のスクリーンショット):var body = JSON.parse(responseBody); tests["Count: " + body.value.length] = true;

表示される内容は次のとおりです(注:上記の例をモックアップするためにresponseBodyをJSONに置き換えました): enter image description here

14
RC_02

これが私が理解した最も簡単な方法です:

pm.expect(Object.keys(pm.response.json()).length).to.eql(18);

それらを変数に合わせてカスタマイズする必要はありません。コピーして貼り付け、「18」を希望する数値に調整します。

5
Forrest

応答本文は、オブジェクトの長さを見つけることができないオブジェクトですtry

var list = responseJson.value.length;
5
Mustafa Mamun

これが私がレコッドを数えるためにしたことです

//parsing the Response body to a variable
    responseJson = JSON.parse(responseBody);

//Finding the length of the Response Array
    var list = responseJson.length;
    console.log(list);
    tests["Validate service retuns 70 records"] = list === 70;

enter image description here

4
Rakesh133

私は同様の問題を抱えていました。特定の数のアレイメンバーをテストするために使用したのは次のとおりです。

responseJson = JSON.parse(responseBody);
tests["Response Body = []"] = responseJson.length === valueYouAreCheckingFor;

取得している値を確認するには、印刷して、郵便配達員コンソールを確認します。

console.log(responseJson.length);
1
J. Castillo

まず、応答をjsonに変換し、値のパスを見つける必要があります。値は配列です。 length関数を呼び出して、そこにあるオブジェクトの数を取得し、予想されるサイズを確認する必要があります

pm.test("Validate value count", function () {
    pm.expect(pm.response.json().value.length).to.eq(2);
});
0
wallance

JSON内の配列の長さを検証するときに、同様の問題に直面していました。以下のスニペットが解決に役立ちます。

responseJson = JSON.parse(responseBody);
var list = responseBody.length;
tests["Expected number"] = responseJson.value.length === list;
0