Comment envoyer un objet maquette en tant que JSON dans mockmvc
Je veux envoyer un objet fantaisie dans le contrôleur via MockMvc avec un type de contenu JSON. Mais quand je suis en train de sérialiser la simulation de l'erreur est:
java.lang.UnsupportedOperationException: Expecting parameterized type, got interface org.mockito.internal.MockitoInvocationHandler.
Are you missing the use of TypeToken idiom?
Mon code est comme suit:
@Test
public void testSomething(){
String xyz = "";
Integer i = 10;
SomeClass inst = mock(SomeClass.class, withSettings().serializable());
when(inst.getProperty1()).then(xyz);
when(inst.getProperty2()).then(i);
Gson gson = new Gson();
String json = gson.toJson(inst); //this is creating error
this.mockmvc.perform(put("/someUrl/").contentType(MediaType.JSON).content(json)).andExpect(status().isOk());
}
Quelqu'un peut me dire ce que je suis absent?
source d'informationauteur Sourabh
Vous devez vous connecter pour publier un commentaire.
Je vous propose de créer un stub de votre
SomeClass
qui renvoie des valeurs connues de lagetProperty1()
etgetProperty2()
méthode. Selon la façon dontSomeClass
est mis en œuvre, vous pouvez soit en créer unnew
instance directement, sous-classe et de redéfinir certaines méthodes, créer un anonyme intérieur de la classe si c'est une interface, etc.Même si c'était possible, la présentation d'un objet fantaisie à un JSON convertisseur de supposer une unité de test dédié à cette opération : la maquette d'un objet peut avoir plusieurs attributs et des méthodes, bien au-delà du réel de la classe et de la sérialisation pourrait conduire à une vraiment étrange résultat.
À mon humble avis, que c'est une unité de test, vous devez écrire à la main le json Chaîne sérialisée. Et vous pouvez faire d'autres tests si vous avez besoin de contrôler la façon dont Gson la sérialisation
J'ai trouver un moyen pour sérialiser un objet fantaisie dans un manière suivante:
Bien que ce que j'ai essayé était INUTILE de cas depuis json sera dépouillé de toutes les moqueries que j'ai fournis dans la fonction test() ainsi, lorsque l'objet sera reconstruit, il n'aura pas de valeur de se moquer d'elle et va jeter NullPointerException lors de la première instance de l'utilisation de toute fonction ou de la propriété.
EDIT : Si vous voulez sérialiser les valeurs null il y a une fonction pour ça aussi :
Nous avons eu un problème similaire:
il a été la journalisation de l'instruction pour la sortie d'un objet sérialisé en json. Et de l'unité de test pour ce produit un message d'erreur parce que gson ne pouvais pas sérialiser un objet fantaisie.
Il a été résolu à la fourniture de l'exclusion de la stratégie qui ignore la sérialisation de la Classe et les champs de type Classe:
Dans la configuration de test, vous pouvez envelopper de message par défaut du convertisseur avec un autre message convertisseur qui prend en charge la sérialisation d'un objet en Chaîne de caractères.
Au Printemps du contexte XML: