我有
Somefun(){
mockedService.execute(()->{
//function body
})
}
所以我想在mock中运行execute方法。我怎么能这样做? 我想通过某种方式,如果我捕获这个mock(它是一个函数)的参数并执行它,我的工作就完成了。有没有办法实现这个目标?或者其他一些方式。 谢谢!
答案 0 :(得分:3)
它看起来像这样:
@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(captor.capture());
/* Do your assertions after you captured the value */
assertThat(captor.getValue()).isInstanceOf(Runnable.class);
}
}