私はこの方法で応答を得ています:
Response response = expect().statusCode(200).given().body(requestBody).contentType("application/json")
.when().post("/admin");
String responseBody = response.getBody().asString();
ResponseBodyにjsonがあります。
{"user_id":39}
この値= 39のみ、rest-assuredのメソッドを使用して文字列に抽出できますか?
「user_id」の抽出にのみ関心がある場合は、次のようにすることもできます。
String userId =
given().
contentType("application/json").
body(requestBody).
when().
post("/admin").
then().
statusCode(200).
extract().
path("user_id");
最も単純な形式では、次のようになります。
String userId = get("/person").path("person.userId");
いくつかの方法があります。私は個人的に次のものを使用します:
単一の値を抽出する:
String user_Id =
given().
when().
then().
extract().
path("user_id");
複数が必要な場合は、応答全体を処理します。
Response response =
given().
when().
then().
extract().
response();
String userId = response.path("user_id");
jsonPathを使用して1つを抽出し、適切なタイプを取得します。
long userId =
given().
when().
then().
extract().
jsonPath().getLong("user_id");
最後の値は、値とタイプに対して照合する場合に非常に便利です。
assertThat(
when().
then().
extract().
jsonPath().getLong("user_id"), equalTo(USER_ID)
);
安心感のあるドキュメントは非常に説明的で完全です。あなたが求めていることを達成する多くの方法があります: https://github.com/jayway/rest-assured/wiki/Usage
応答をクラスにシリアル化するには、ターゲットクラスを定義します
public class Result {
public Long user_id;
}
そして、それに応答をマップします。
Response response = given().body(requestBody).when().post("/admin");
Result result = response.as(Result.class);
ドキュメントが示すように、クラスパスにジャクソンまたはGsonが必要です: http://rest-assured.googlecode.com/svn/tags/2.3.1/apidocs/com/jayway/restassured/response/ResponseBodyExtractionOptions。 html#as(Java.lang.Class)
JsonPath jsonPathEvaluator = response.jsonPath();
return jsonPathEvaluator.get("user_id").toString();