我有
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);
}
}