9
votes

Corps de réponse vide pour poteau avec repos assuré

J'utilise de repos à la fois avec Junit4. Dans ma méthode de test, je crée un objet dans mongodb et quand j'exécute le test, il persiste avec succès. Mais je dois stocker l'identifiant créé, alors j'essaie d'obtenir le corps de la réponse. Mais le réponse.getbody (). Assgring () est vide. XXX

Lorsque j'invoque le point de fin de repos, il renvoie le corps de réponse aussi avec des champs pertinents Donc, pas de problème avec l'API de repos.

Si aucune réponse pour la question ci-dessus, comment testeriez-vous un post avec un corps de retour avec le repos assuré afin que je puisse essayer de cette façon.

Ma méthode de contrôleur ressemble à xxx


0 commentaires

3 Réponses :


1
votes

Ceci est l'endroit où brille assurée, son interface fluide est très utile pour localiser la bonne méthode à utiliser. Si vous utilisez des démarrages à ressort, le test doit fonctionner sans ajouter des dépendances ni de la configuration (sauf assurés de repos, bien sûr :)

exemple de contrôleur xxx

et test: < / p> xxx


0 commentaires

8
votes

Nous utilisons une autre wat pour appeler des services avec reposeturé. Toutefois, si vous obtenez une chaîne vide, vous pouvez déboguer si votre service a été appelé ou non à l'aide de .Pek () code>.

Vous pouvez utiliser ce test: p>

@Test
public void testStatus() 
{
    String response = 
            given()
               .contentType("application/json")
               .body(assignment)
            .when()
               .post("videoAssignments")
               .peek() // Use peek() to print the ouput
            .then()
                .statusCode(201) // check http status code
                .body("assignmentId", equalTo("584")) // whatever id you want
            .extract()
                .asString();

    assertNotNull(response);
}


3 commentaires

Merci. J'essaie d'utiliser ceci. Si je cours avec la deuxième ligne de corps, il est indiqué, "aucun type de contenu n'a été défini dans la réponse". Alors j'ajoute que le type de contenu ajoutez à nouveau comme .Chen () T Faites correspondre le type de contenu réel. Tout indice quelle est la raison? Dans mon contrôleur, l'API de repos produit et consomme des attributs également définis comme JSON. J'ai mis à jour ma question pour montrer comment l'API du contrôleur ressemble également à l'apparence de l'API du contrôleur.


Également encore quand j'inspecterai jusqu'à coupelle (), je peux voir que le contenu est null et contenttype = ""


@HARSHANA, je suppose que votre contrôleur n'est pas bien configuré. Il pourrait générer des XML au lieu de JSON si des têtes d'en-tête incorrects sont définis, vous devez peut-être configurer accepter en-tête sous forme de JSON. En plus de cela, j'ai remarqué que j'utilise un nom constant sans classe, vous pouvez utiliser explicitement produit = mediatype.application_json_value . De plus, avant d'utiliser reposeturé pour vous connecter à votre service, assurez-vous que vous pouvez atteindre votre contrôleur avec un autre client tel que Postman, et une fois que vous avez confirmé, il fonctionne, puis passez à la resest



0
votes

Vous pouvez essayer de vous connecter (). Toutes les méthodes () pour vérifier les contenus de la réponse.La extrait de cide suivant peut vous aider.

@Test
public void test(){
Map<String,Object> createVideoAssignmentParm = new HashMap<String,Object>();
createVideoAssignmentParm.put("test1", "123");
Response response=given()
        .spec(request)
        .contentType(ContentType.JSON)
        .body(assignment)
        .post("videoAssignments");

        response.then()
        .statusCode(201).log().all();

        assignmentId=response.path("assignmentId");
   }


0 commentaires