3

resteasyを使用して REST API を作成し、rest- assuredでテストしています。

messageプロパティを持つクラス があるとしましょうtext

@XmlRootElement
public class message {
  @XmlElement
  public String text;
}

次のテストでは、このオブジェクトを特定の URL に投稿しようとします。

message msg = new message();
msg.text = "some message";

expect()
  .statusCode(200)
.given()
   .contentType("application/json")
   .body(msg)
.when()
  .post("/message");

msg オブジェクトは json にシリアル化されて投稿されますが、私が望む方法ではありません。つまり、resteasy が必要とする方法ではありません。

投稿されたもの:

{ "text": "some message" }

何が機能していますか:

{ "message": { "text": "some message" } }

これを期待どおりに機能させる方法についての手がかりはありますか?

4

2 に答える 2

6

これにはすでに答えがあることは知っていますが、json オブジェクトを送信する方法を共有したいと思います。誰かが役に立つと思うかもしれません

// import org.json.simple.JSONObject;
JSONObject person = new JSONObject();
person.put("firstname", "Jonathan");
person.put("lastname", "Morales");

JSONObject address = new JSONObject();
address.put("City", "Bogotá");
address.put("Street", "Some street");
person.put("address", address);

String jsonString = person.toJSONString();
// {"address":{"Street":"Some street","City":"Bogotá"},"lastname":"Morales","firstname":"Jonathan"}

// import static com.jayway.restassured.RestAssured.*;
given().contentType("application/json")
       .body(jsonString)
       .expect().statusCode(200)
       .when().post("http://your-rest-service/");
于 2013-11-20T15:13:46.443 に答える
4

おそらく、RestEasy でビルトインの Jettison JSON シリアライザを使用しているでしょう。Jettison は、XML-> Json 規則 (BadgerFish とも呼ばれます) を使用します。Jettison を Jackson または GSon に置き換えて、RestAssured と互換性のある JSON 形式を取得します。

于 2012-05-24T14:10:19.357 に答える