2017-05-09 17 views
0

私はユニットテストに新しいですし、私は方法以下の試験で立ち往生しています:mockitoでhandler.postDeleyedをテストするには?

@Test 
    fun freeze() { 
     var view = mock<View>() 
     viewUtil.freeze(view) 
     assertFalse(view.isClickable) 
    } 

しかし、今、私はそのビューをテストする必要がクリック可能になります。ここでは

fun freeze(view: View) { 
     view.isClickable = false 
     handler.postDelayed({ 
      view.isClickable = true 
     }, CLICK_TIMEOUT) 
    } 

は、私がすでに持っていますものですCLICK_TIMEOUTの後。

この種のテストはどのように実装できますか?

答えて

3

あなたがHandlerインスタンスを模擬することができるならば、あなたはそれを行うことができます。

Handler mockHandler = mock(Handler.class); 
when(mockHandler.postDelayed(any(Runnable.class), anyLong())).thenAnswer(new Answer() { 

    @Override 
    public Object answer(InvocationOnMock invocation) throws Throwable { 
     invocation.getArgumentAt(0, Runnable.class).run(); 
     return null; 
    } 

});
関連する問題