Ich benutze Restassured mit Junit4. In meiner Testmethode erstelle ich ein Objekt in mongodb und wenn ich den Test ausführe, bleibt es erfolgreich bestehen. Aber ich muss die ID speichern, die erstellt wird, also versuche ich, den Antwortkörper zu erhalten. Aber die response.getBody().asString()
ist leer.Leere Antwort Körper für Post mit Ruhe versichert
@Test
public void testA() throws JSONException {
Map<String,Object> createVideoAssignmentParm = new HashMap<String,Object>();
createVideoAssignmentParm.put("test1", "123");
Response response = expect().statusCode(201).when().given().contentType("application/json;charset=UTF-8")
.headers(createVideoAssignmentParm).body(assignment).post("videoAssignments");
JSONObject jsonObject = new JSONObject(response.getBody().asString());
id= (String)jsonObject.getString("assignmentId");
}
Wenn i den Rest Endpunkt extern aufrufen, es gibt die Antwort Körper auch mit den entsprechenden Feldern also kein Problem mit dem Rest API.
Wenn keine Antwort für obige Frage dann, wie würden Sie einen Beitrag mit Rückkehr Körper mit Ruhe getestet testen, so dass ich es so versuchen kann.
Mein Controller-Methode aussieht,
@RequestMapping(value = "/videoAssignment", produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE, method = RequestMethod.POST)
@ResponseBody
public HttpEntity<VideoAssignment> createVideoAssingnment(
//@ApiParam are there..){
//other methods
return new ResponseEntity<>(va, HttpStatus.CREATED);
}
Danke. Ich versuche das zu benutzen. Wenn ich mit der zweiten Körperlinie arbeite, heißt es: "In der Antwort wurde kein Inhaltstyp definiert". Dann füge ich den Inhaltstyp erneut als .then() hinzu. StatusCode (201) .contentType ("application/json") .body ("assignmentId", equalTo ("testid123")) aber es heißt, application/json "doesn ' t passen tatsächlichen Inhalt-Typ.Jede Ahnung, was der Grund? In meinem Controller der Rest api produziert und konsumiert Attribute auch als JSON definiert.Ich habe meine Frage zu aktualisieren, um zu zeigen, wie die Controller-API auch aussieht.Auch – Harshana
Auch noch, wenn ich zu prüfen bis peek(), ich kann sehen, der Inhalt ist null und contentType = "" – Harshana
@Harshana Ich vermute, dass Ihr Controller nicht gut konfiguriert ist. Es könnte XML anstelle von JSON generieren, wenn falsche Header gesetzt sind, müssen Sie möglicherweise einrichten "Accept" Header als JSON auch Außerdem habe ich festgestellt, verwenden Sie den Namen ohne Klasse verwenden können Sie explizit 'produces = MediaType.APPLICATION_JSON_VALUE'. Zusätzlich vor der Verwendung von RestAssured Um eine Verbindung zu Ihrem Dienst herzustellen, stellen Sie sicher, dass Sie Ihren Controller mit einem anderen Client wie Postman erreichen können. Sobald Sie bestätigen, dass es funktioniert, wechseln Sie zu RestAssured –