2012-07-30 103 views
0

我只是試圖存根方法,但得到空指針異常。我有點空白這裏發生了什麼。mockito時出現錯誤方法

我的方法:

OauthStatus validate(HttpServletRequest request, 
      boolean accessTokenRequired) throws OauthProviderException; 

和存根是:

Mockito.when(oauthProviderMock.validate((MockHttpServletRequest) Mockito.anyObject(), (boolean)Mockito.anyBoolean())). 
       thenReturn(new OauthStatus()); 

我看有沒有錯,用嘲諷的,但拋出空指針異常。

任何想法這裏發生了什麼?

+1

NPE的堆棧跟蹤將是有益的。 – 2012-07-30 16:54:48

+0

堆棧跟蹤爲空。只是原因是空指針異常。 – 2012-07-30 17:13:38

+1

您是否嘗試過調試器來查看哪個對象完全爲空? – 2012-07-30 17:38:07

回答

-2

解決方法是通過使用匿名類而不是Mockito以編程方式模擬該方法。

例如:

oauthProvider = new OauthProvider(){ 

     validate(HttpServletRequest req, boolean flag) throws Exception{ 
      throw new RuntimeException(); 
     } 

}; 
0

刪除您的強制類型(MockHttpServletRequest)(boolean)所以它看起來像這樣

Mockito.when(oauthProviderMock.validate(Mockito.any(HttpServletRequest.class), Mockito.anyBoolean())). 
     thenReturn(new OauthStatus()); 

按照anyObject API它將返回null那麼你很可能看到你的NPE這裏。

根據anyBoolean API它將返回false因此應該不需要投射。

+0

如果我將轉換轉到MockHttpServletRequest,那麼它會抱怨說,它不適用於argments Object,boolean。 – 2012-07-31 15:56:10

+1

嘗試使用Mockito.any(HttpServletRequest.class)的參數 – Brad 2012-08-01 10:02:30

+0

我認爲Mockito。 anyObject()也應該工作。 – rmaruszewski 2012-08-01 13:36:33

相關問題