2016-04-23 10 views
0

はここにサーブレットのために私のコードです。どのようにユニットテストServletResponseをJavaへ

@Test(expected = IOException.class) 
public void testService_CheckIOException() throws ServletException,  IOException { 
    when(mockFoofactory.getfoos(Matchers.eq("foo"))).thenReturn(mockfoo); 
    when(mockRequest.getServerName()).thenReturn("serverName"); 
    when(mockRequest.getServerPort()).thenReturn(80); 
    when(mockfoo.getRequestBuilder(Matchers.eq("http://serverName:80foo"))) 
     .thenReturn("locationURI"); 
    Servlet.service(mockRequest, mockResponse); 
    //This line doesn't work in mockito 
    when(mockResponse).sendRedirect("locationURI")).thenThrow(IOException.class); 

私は、送信リダイレクトのためIOExceptionとテストを投げることができるとにかくありますか?私は、メソッドがスローするIOExceptionIllegalStateExceptionをテストしたいと思います。

+1

あなたが好きな何かを行うことができますを使用することができます。 [documentation](http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#12)を見てください。 – aribeiro

答えて

0

Mockitovoidの方法を使用できます。 `;` doThrow(IOException.class).when(mockResponse).sendRedirect( "locationURI"):

doNothing().when(mock).voidMethod(); 

は同じようにあなたは、 doThrow(new IOException())

+0

これを使用しましたが、IOExceptionをスローしません。予想されるIOExceptionはエラー – Jasmine

+0

を表示します。あなたが '.sendRedirect(" locationURI ")'がテストされていることを確認してください。むしろ 'doThrow(IOException.class).when(mockResponse).sendRedirect(anyString());'をこのように擬似することを提案し、渡された引数をチェックするために 'verify'を使用します。 –

+0

働いています...恐ろしいです..ありがとうございました – Jasmine