Hamcrest matcher, чтобы проверить, имеет ли какой-либо элемент в массиве ответа json значение свойства, такое же как указанное значение c в Rest Assured - PullRequest
0 голосов
/ 11 февраля 2020

Я работаю над автоматизацией тестирования REST API с помощью Rest-Assured. Для одного API я получаю массив, как показано ниже в ответ. Из этого массива данных мне нужно проверить, что любой элемент массива имеет любое свойство "requestRefNo" со значением: "Sss / 12345637/58"

 {
    "data": [
        {
            "requestRefNo": "Sss/12345637/88",
            "requestRefType": "AST",
            "requestedByCode": "OWR",
            "requestedByDesc": "Asset Owner",
            "requestedDate": "12/06/2016",
            "requestTypeRefNo": "Sss/12345637/SWT/73"
        },
        {
            "requestRefNo": "Sss/12345637/58",
            "requestRefType": "AST",
            "requestedByCode": "OWR",
            "requestedByDesc": "Asset Owner",
            "requestedDate": "10/06/2016",
            "requestTypeRefNo": "Sss/12345637/SWT/43"
        },
        ....
    ],
    "links": {
        "linkDetails": [

        ],
        "empty": true
    },
    "errors": {
        "empty": true,
        "errorDetails": [

        ]
    }
}

Я пробовал вот так:

.assertThat().statusCode(200).body("data.requestRefNo", IsArrayContaining.hasItemInArray("Sss/12345637/58"))))

Но выдает следующую ошибку:

java.lang.AssertionError: 1 expectation failed.
JSON path data.requestRefNo doesn't match.
Expected: an array containing "Sss/12345637/58"
  Actual: [Sss/12345637/58, Sss/12345637/88]

Может кто-нибудь дать мне какую-нибудь идею?

Спасибо, Суродип

1 Ответ

0 голосов
/ 12 февраля 2020

Получен очень простой ответ, пропущенный ранее:

...
.body("data.requestRefNo", Matchers.hasItem("Sss/12345637/58"))
                                        .extract().response();

"data.requestRefNo" вернет массив всех requestRefNo в массиве ответов, например [Sss / 12345637/58, Sss / 12345637/88 ] и Matchers.hasItem проверит, существует ли в этом значение "Sss / 12345637/58".

Спасибо.

...