如何使用参数captor mockito捕获函数的参数



我有

Somefun(){
   mockedService.execute(()->{
      //function body
   })
}

所以我想运行模拟内部的执行方法。我该怎么办?我发现,如果我以某种方式捕获了此模拟的参数(这是一个函数)并执行它,那么我的工作就会完成。有什么方法可以实现这一目标吗?或其他方式。谢谢!

它看起来像这样:

@RunWith(MockitoRunner.class)
public class SomeFunTest {
    @Mock Service mockedService;
    @Captor ArgumentCaptor<Runnable /* or whatever type of function you expect there*/> functionCaptor;
    @Test
    public void serviceShouldInvokeFunction() {
        // given
        ObjectUnderTest out = new ObjectUnderTest(mockedService);
        // when
        out.SomeFun();
        // then
        verify(mockedService).execute(functionCaptor.capture());
        /* Do your assertions after you captured the value */
        assertThat(functionCaptor.getValue()).isInstanceOf(Runnable.class); 
    }
}

相关内容

  • 没有找到相关文章

最新更新