2010-12-07 4 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); 

私は次のことをやってみましたが、私は「fooへのオブジェクトに変換することはできません」のようなメッセージを取得しています。 ...理にかなっている:

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

各カスタムクラスのカスタム照合を作成することなく、これを行うための簡単な方法がある場合、私は思ったんだけど?キャストが十分である

おかげ

答えて

3

を上げるとは異なる何かをしたい場合は

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

:あなたは例外

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

doAnswerは(もありますが)あなたは、ISAを試してみましたマッチャー?

doThrow(new RuntimeException("dummy exception")).when(mockObj).someMethod(isA(Foo.class)); 
関連する問題