Mockito:Comment se moquer de la méthode appelée à l'intérieur d'une autre méthode
Je suis nouveau sur mockito et je suis en utilisant mockito à la méthode d'essai qui est l'appel d'une autre méthode et appelle la méthode renvoie la chaîne de caractères.
J'ai essayé, mais je suis incapable d'écrire le test. S'il vous plaît aider
public class MyClass {
protected String processIncominData(String input) {
String request = ...;
...
String response = forwardRequest(request);
...
return response;
}
public String forwardRequest(String requestToSocket) {
String hostname = socketServerName;
int port = socketServerPort;
String responseLine=null;
Socket clientSocket = null;
PrintStream outs=null;
BufferedReader is = null;
BufferedWriter bwriter=null;
try {
clientSocket = new Socket(hostname, port);
outs=new PrintStream(clientSocket.getOutputStream());
is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
bwriter = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
} catch (UnknownHostException e) {
LOGGER.error("Don't know about host: " + hostname + e.getMessage());
} catch (IOException e) {
LOGGER.error("Couldn't get I/O for the connection to: " + hostname + e.getMessage());
}
if (clientSocket == null || outs == null || is == null) {
LOGGER.error("Something is wrong. One variable is null.");
}
try {
while ( true ) {
StringBuilder sb = new StringBuilder();
sb.append(requestToSocket);
String request = sb.toString().trim();
bwriter.write(request);
bwriter.write("\r\n");
bwriter.flush();
responseLine = is.readLine();
LOGGER.info("Socket returns : " + responseLine);
//outs.println(responseLine);
bwriter.close();
}
} catch (UnknownHostException e) {
LOGGER.error("Trying to connect to unknown host: "+ e.getMessage());
} catch (IOException e) {
LOGGER.error("IOException: "+ e.getMessage());
}
finally{
try {
outs.close();
is.close();
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return responseLine;
}
}
Je veux pour se moquer de réponse xml ici pour tester processIncomingData méthode..Cette réponse est à venir à partir de socket serveur et je suis de l'envoi de la demande par le socket client. Je pense que la prise ne sera pas grave si je peux maquette xmlResponse de socket. Veuillez donner toute réponse utile
Montrer comment
Je suis à la lecture de la réponse xml du serveur socket. Il est dans un format de chaîne comme "<réponse><test>123</test></réponse>", etc
Votre test unitaire ne doit pas dépendre d'un serveur socket. Vous devriez être en se moquant du client.
pouvez-vous nous dire comment se moquer du client?
Afficher plus de code. Plus précisément, 1) l'ensemble de la ligne de code qui récupère
xmlResponse
est généré. Vous avez besoin d'utiliser une maquette à la ligne String xmlResponse = ...;
. Si c'est une méthode d'instance d'appel, l'utilisation Mockito
pour se moquer de la fève (lire la socket client). Si c'est un appel statique, utilisez JMockit
de se moquer de l'appel statique.Je suis à la lecture de la réponse xml du serveur socket. Il est dans un format de chaîne comme "<réponse><test>123</test></réponse>", etc
Votre test unitaire ne doit pas dépendre d'un serveur socket. Vous devriez être en se moquant du client.
pouvez-vous nous dire comment se moquer du client?
Afficher plus de code. Plus précisément, 1) l'ensemble de la ligne de code qui récupère
xmlResponse
2) comment MyClass
devient l'instance de la client qu'il utilise.
OriginalL'auteur Lakshya | 2014-11-25
Vous devez vous connecter pour publier un commentaire.
Maintenant que vous avez posté, la réponse à la façon de se moquer, il est ici.
test-java-sockets
Merci John..j'ai raillé flux d'entrée et de son travail maintenant...
OriginalL'auteur John B
Vous pouvez essayer le
spy
méthode:puis quand vous appelez
la réponse sera "bar" (si la demande est "foo")
PS: Lorsque vous avez besoin pour se moquer de la classe sous test, il indique un problème avec votre conception.
Généralement considéré comme une mauvaise pratique pour se moquer de la classe sous test.
Oui. C'est pourquoi je suis a ajouté un commentaire à une catégorie distincte.
Ne savais pas que c'était un commentaire sur votre propre poste. Aurait été mieux d'éditer ton post pour mettre l'expansion dans le corps.
Il n'a pas été une partie de la réponse, il suffit de soupçon. Mais j'ai édité ma réponse.
OriginalL'auteur talex