2017-01-09 24 views
2

jsonデータでhttp POSTを模擬したいと思います。http POSTをapplicationType JsonとMockito Javaで模擬する方法

私は次のコードでsuccedded GETメソッドの場合:

import static org.mockito.Mockito.mock; 
import static org.mockito.Mockito.when; 

when(request.getMethod()).thenReturn("GET"); 
when(request.getPathInfo()).thenReturn("/getUserApps"); 
when(request.getParameter("userGAID")).thenReturn("test"); 
when(request.getHeader("userId")).thenReturn("[email protected]"); 

私の問題は、HTTP POSTリクエストのボディです。 application/jsonタイプのコンテンツが含まれています。

何かこれのようなものですが、json応答に答えるための要求パラメータは何でしょうか?

HttpServletRequest request = mock(HttpServletRequest.class); 
HttpServletResponse response = mock(HttpServletResponse.class); 

when(request.getMethod()).thenReturn("POST"); 
when(request.getPathInfo()).thenReturn("/insertPaymentRequest"); 
when(???? ).then(???? maybe ?? // new Answer<Object>() { 
    @Override 
    public Object answer(InvocationOnMock invocation) throws Throwable { 
     new Gson().toJson("{id:213213213 , amount:222}", PaymentRequest.class); 
     } 
    }); 

「public Object answer ...」は、Jsonリターンに使用する正しい方法ではありません。

usersServlet.service(request, response); 

答えて

4

POSTリクエストのボディはrequest.getInputStream()を介して、またはrequest.getReader()方法のいずれかを介してアクセスされます。これらは、JSONコンテンツを提供するために模倣する必要があります。 getContentType()も偽装してください。

String json = "{\"id\":213213213, \"amount\":222}"; 
when(request.getInputStream()).thenReturn(
    new DelegatingServletInputStream(
     new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)))); 
when(request.getReader()).thenReturn(
    new BufferedReader(new StringReader(json))); 
when(request.getContentType()).thenReturn("application/json"); 
when(request.getCharacterEncoding()).thenReturn("UTF-8"); 

あなたは春のフレームワークからDelegatingServletInputStreamクラスを使用するか、単にそのsource codeをコピーすることができます。

+0

私は具体的な質問に例/解決策を提供できますか? – VitalyT

+0

@VitalyTサンプルコード –

+0

で回答を更新しました。コンパイルエラーが発生しました:(request.getInputStream())whenReturn(new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8))); --inputstream to ByteArrayInputStream – VitalyT

関連する問題