Comment utiliser mockito pour tester un service REST?

Je suis très nouveau dans Java de Tests Unitaires et j'ai entendu dire que Mockito cadre est vraiment bon pour des fins de test.

J'ai développé un REPOS Serveur (méthodes CRUD) et maintenant je veux le tester, mais je ne sais pas comment?

Même plus je ne sais pas comment cette procédure d'essai doit commencer. Mon serveur doit travailler sur localhost et puis faire des appels sur cette url(par exemple: localhost:8888)?

Voici ce que j'ai essayé jusqu'à présent, mais je suis assez sûr que ce n'est pas de la bonne façon.

    @Test
    public void testInitialize() {
        RESTfulGeneric rest = mock(RESTfulGeneric.class);

        ResponseBuilder builder = Response.status(Response.Status.OK);

        builder = Response.status(Response.Status.OK).entity(
                "Your schema was succesfully created!");

        when(rest.initialize(DatabaseSchema)).thenReturn(builder.build());

        String result = rest.initialize(DatabaseSchema).getEntity().toString();

        System.out.println("Here: " + result);

        assertEquals("Your schema was succesfully created!", result);

    }

Voici le code pour initialize méthode.

    @POST
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/initialize")
    public Response initialize(String DatabaseSchema) {

        /** Set the LogLevel to Info, severe, warning and info will be written */
        LOGGER.setLevel(Level.INFO);

        ResponseBuilder builder = Response.status(Response.Status.OK);

        LOGGER.info("POST/initialize - Initialize the " + user.getUserEmail()
                + " namespace with a database schema.");

        /** Get a handle on the datastore itself */
        DatastoreService datastore = DatastoreServiceFactory
                .getDatastoreService();


        datastore.put(dbSchema);

        builder = Response.status(Response.Status.OK).entity(
                "Your schema was succesfully created!");
        /** Send response */
        return builder.build();
    }

Dans ce cas de test je veux envoyer une chaîne Json pour le serveur(POST). Si tout s'est bien passé puis le serveur doit répondre avec "Votre schéma a été créé avec succès!".

Quelqu'un peut-il m'aider?

  • Où dans le code ci-dessus ne vous envoyer une chaîne JSON pour le serveur? Pourquoi avez-vous encore besoin de Mockito pour de tels tests?
  • Je ne sais pas si j'ai besoin de Mockito pour ce genre de tests, comme je l'ai dit je m en essayant de comprendre comment tester un service REST. Le fichier JSON est l'envoi quand je suis à l'appel de cette méthode : rest.initialize(DatabaseSchema) , DatabaseSchema est un fichier JSON.
  • Non, il n'est pas. rest est un simulacre. C'est un objet qui répond à ce que vous lui dites de réponse. Ce n'est pas de votre serveur. Vous faites des tests Mockito au lieu de tester votre serveur. Vous n'avez pas besoin de Mockito pour de tels tests.
  • Merci!!!! Pouvez-vous svp me guider, comment dois-je faire? Je veux tester mes méthodes CRUD. Je veux des tests unitaires, de tester le reste de la méthode sur mon serveur.
  • Soit tu fais des tests d'intégration et envoyer JSON de votre serveur et d'analyser la réponse que vous obtenez pour s'assurer qu'ils sont appropriés, ou vous faire des tests unitaires pour tester des méthodes de classes utilisé côté serveur. Mockito peut être utile pour les seconds. Mais sans voir le code, il est impossible de vous dire comment le tester, autres que de pointer du doigt vous à la documentation de Mockito.
  • Lorsque vous m'avez dit de faire des tests d'intégration et d'envoyer JSON à un serveur, vous avez voulu utiliser HttpClient et fait envoyer une requête à l'API du serveur url? Mais ce genre de tests ne sont pas des tests unitaires, parce que je suis en train de tester des méthodes individuelles! Je pense que je suis confus ou il n'est pas clair pour moi.
  • Oui, c'est ce que je voulais dire avec les tests d'intégration. C'est aussi ce que vous avez demandé: Dans ce cas de test je veux envoyer une chaîne Json pour le serveur(POST). Si vous voulez tester une méthode d'un objet, alors tout va bien, mais ce n'est pas ce que vous avez demandé. Et sans savoir ce que cette méthode est censé faire, quel est son nom, des arguments et des dépendances, il n'est pas possible pour les aider.
  • Tout d'abord merci beaucoup pour m'aider. Dans ce cas, la méthode initialize sur le côté serveur, de recevoir un fichier JSON comme ceci: {"kind":"Note", "property":["id","name","note","date"]} et puis, après l'analyse du JSON et extraction des propriétés crée une base de données avec ce schéma, où kind est le nom de la DB et properties sont les champs(colonnes). J'ai mis à jour la question avec le code de cette méthode. Puis, après l'initialisation je veux tester l'Ajouter, mettre à Jour, Supprimer, la méthode Get.
  • Je veux suggérer WireMock. C'est une bibliothèque pour cogner et se moquant de services web. wiremock.org/index.html

InformationsquelleAutor Ion Morozan | 2012-05-27