Wie zum Hohn ein javax.- servlet.ServletInputStream
Erstelle ich einige unit-Tests und versuchen zu Verspotten einige Anrufe. Hier ist, was ich in meinen arbeiten-code:
String soapRequest = (SimUtil.readInputStream(request.getInputStream())).toString();
if (soapRequest.equals("My String")) { ... }
und SimUtil.readInputSteam sieht wie folgt aus:
StringBuffer sb = new StringBuffer();
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(inputStream));
final int buffSize = 1024;
char[] buf = new char[buffSize];
int numRead = 0;
while ((numRead = reader.read(buf)) != -1) {
String readData = String.valueOf(buf, 0, numRead);
sb.append(readData);
buf = new char[buffSize];
}
} catch (IOException e) {
LOG.error(e.getMessage(), e);
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
LOG.error(e.getMessage(), e);
}
}
Was ich versuche zu tun, ist der Wunsch.getInputStream(), die den stream gibt bestimmte Zeichenfolge.
HttpServletRequest request = mock(HttpServletRequest.class);
ServletInputStream inputStream = mock(ServletInputStream.class);
when(request.getInputStream()).thenReturn(inputStream);
Also das ist der code ich möchte Zustand
when(inputStream.read()).thenReturn("My String".toInt());
Jegliche Hilfe würde sehr geschätzt werden.
- Würde ich ersetzen
SimUtil.readInputSteam
vonCharStreams.html#toString(java.lang.Readable)
und lassen Sie die Guave-team kümmert sich um die Prüfung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verspotten Sie nicht den InputStream. Stattdessen verwandeln Sie die Zeichenfolge in ein array von bytes mit der
getBytes() Methode. Dann erstellen Sie einen ByteArrayInputStream mit dem array als Eingabe, so dass es gibt den String zurück, wenn verbraucht, jedes byte zu einer Zeit. Als Nächstes erstellen Sie einen ServletInputStream, dass wraps eine regelmäßige InputStream, wie die von Frühling:
und schließlich die HttpServletRequest mock zurückkehren würde diese DelegatingServletInputStream Objekt.
MockHttpServletRequest
im Frühling testen, wenn ich mich gut erinnern