web-dev-qa-db-ja.com

REST Assured、応答にフィールドが存在するかどうかを確認するにはどうすればよいですか?

含むまたは含まないのいずれかの特定のフィールドのいずれかで、それがJSONであるとしましょう。

when()
    .get("/person/12345")
.then()
    .body("surname", isPresent()) // Doesn't work...
    .body("age", isNotPresent()); // ...But that's the idea.

JSONにフィールドageおよびsurnameが含まれるかどうかをアサートする方法を探しています。

19
juliaaano

Hamcrestマッチャーを使用できます hasKey() (from org.hamcrest.Matchersクラス)もJSON文字列で。

when()
    .get("/person/12345")
.then()
    .body("$", hasKey("surname"))
    .body("$", not(hasKey("age")));

次のようにequals(null)を使用できます。

.body("surname", equals(null))

フィールドが存在しない場合、nullになります

0
J. N

使用:_import static org.junit.Assert.assertThat;_

あなたの可能性:assertThat(response.then().body(containsString("thingThatShouldntBeHere")), is(false));

0
ForJaysSake

Wheteverフィールドがnullであることを確認してください。例えば:

    Response resp = given().contentType("application/json").body(requestDto).when().post("/url");
    ResponseDto response = resp.then().statusCode(200).as(ResponseDto.class);
    Assertions.assertThat(response.getField()).isNotNull();
0
Marcin Tarka