如何在常規測試中模擬由groovy(輸入/輸出流)擴展的java類?我嘗試了mockito和groovy mocks,但沒有運氣。有什麼辦法可以工作嗎?任何可以處理這種情況的java/groovy庫?在groovy中嘲笑擴展的java類
下面有一個groovy servlet,它使用InputStream上的groovy getText方法和OutputStream上的setBytes。如何嘲笑(1)getText和驗證(2)在常規測試setBytes?
感謝您的幫助,
米哈爾
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
@groovy.transform.TypeChecked
class SomeServlet extends javax.servlet.http.HttpServlet {
@Override
protected void doPost(final HttpServletRequest request, final HttpServletResponse response) {
final String charset = request.getCharacterEncoding();
final String requestPayload = request.getInputStream().getText(charset); // GROOVY getText
response.setContentType(request.getContentType());
response.setStatus(200);
response.setCharacterEncoding(charset);
response.getOutputStream().setBytes(requestPayload.getBytes(charset)) // GROOVY setBytes
}
}
class SomeServletTest {
@org.testng.annotations.Test
void aTest() {
// given
HttpServletRequest request = mock(HttpServletRequest)
when(request.getCharacterEncoding()).thenReturn("UTF-8")
when(request.getInputStream().getText("UTF-8")).thenReturn("some text") // (1)
HttpServletResponse response = mock(HttpServletResponse)
def ss = new SomeServlet()
// when
ss.doPost(request, request)
// then
verify(response.getOutputStream()).setBytes("some text") // (2)
}
}
春天嘲笑解決我的問題。但是我仍然想知道如何模擬一般由groovy擴展的java類。 – Michal