2010-12-07 71 views
1

我有以下情況......我想拋出一個異常,每當一個特定的方法被調用。我不在乎傳遞給這個方法的是什麼,我只是想要調用一個異常。問題在於這種方法將自定義類作爲參數。是否需要爲此Mockito編寫自定義匹配器?

我發現做到這一點的唯一方法是使用下面的:

// Matches any Foo 
TypeSafeMatcher<Foo> fooMatcher = new TypeSafeMatcher<Foo>() { 
    @Override 
    public Boolean matchesSafely(Foo foo) { 
    return true; 
    } 

    // more overrides 
} 

doThrow(new RuntimeException("dummy exception")).when(mockObj).someMethod(fooMatcher); 

我試着做以下,但我發現了類似「無法對象轉換爲富」的消息。 ..這是有道理的:

doThrow(new RuntimeException("dummy exception")).when(mockObj).someMethod(anyObject()); 

我不知道是否有一個更簡單的方法來做到這一點,而不必爲每個自定義類的自定義匹配?

感謝

回答

3

你試過在ISA匹配器?

doThrow(new RuntimeException("dummy exception")).when(mockObj).someMethod(isA(Foo.class)); 
2

一投就足夠了:

doThrow(new RuntimeException("dummy exception")).when(mockObj).someMethod((Foo)anyObject()); 
1

還有doAnswer()如果你想做些不同的事不是引發一個例外

doAnswer(new Answer() { 
     public Object answer(InvocationOnMock invocation) { 
      Object[] args = invocation.getArguments(); 
      Mock mock = invocation.getMock(); 
      return null; 
     }}) 
    .when(mock).someMethod(); 
相關問題