2016-11-10 10 views
0

予想される例外があるメソッドをテストしています。 例外がスローされた後で(模擬オブジェクト上で)いくつかのコードが呼び出されたが、検証が無視されていることを確認する必要もあります。ここ は、コードは次のとおりです。Mockito:メソッドを確認する方法は、常に例外をスローする別のメソッド内で呼び出されましたか?

public class ExceptionHandler { 

    @Autowired 
    private Sender sender; 

    public void handle(Exception exception) throws Exception { 
     if (!SomeException.class.isAssignableFrom(exception.getClass())) { 
     sender.sendMessage(ExceptionUtils.getStackTrace(exception)); 
     } 
     throw exception; 
    } 
} 
ここ

は、テストコードです:

@Mock 
private Sender sender; 

@InjectMocks 
private ExceptionHandler handler; 

@Test 
public void testHandler() throws Exception { 
    SomeException someException = new SomeException(); 

    try { 
     handler.handle(someException); 
    } catch (SomeException thrownResult) { 
     assertEquals(someException, thrownResult); 
    } 

    verify(sender, times(1)).sendMessage(Mockito.anyString()); 
} 

答えて

1

I also need to verify that some code was called (on a mocked object) after the exception is thrown, but verification is being ignored.

これは真実ではありません、このラインは実際に実行です:

verify(sender, times(1)).sendMessage(Mockito.anyString()); 

しかし、このエラーで確認に失敗します:

Wanted but not invoked: sender.sendMessage();

<...>

Actually, there were zero interactions with this mock.

予想された通りの条件!SomeException.class.isAssignableFrom(exception.getClass())が満たされなかったため、そのメソッドが呼び出されなかった - あなたはSomeExceptionのインスタンスでhandler.handleを呼び出します。

+0

ありがとうございました!見逃した –

関連する問題