interface A{
public void verifyCredentials(JsonObject credentials, Handler<AsyncResult<Void>> handler);
}
@RunWith(VertxUnitRunner.class)
Class C {
protected A sampleObject;
@BeforeClass
public static void setup(TestContext context) {
sampleObject = Mockito.mock(C.class);
when(sampleObject.verifyCredentials(new JsonObject, ??)).then(false);
}
}
如何使用 Mockito 模拟 AsyncHandler?
如何在此方案中使用参数捕获?
您可以使用
ArgumentCaptor
来捕获Handler<AsyncResult<Void>>
,但是,请注意,根据传递给方法verifyCredentials
的参数,对象捕获很可能不是模拟的。当然,这绝对没问题,除非您明确想嘲笑处理程序 - 为此,ArgumentCaptor
不会帮助您。
因此,如果要使用 ArgumentCaptor
来检查传递给 verifyCredentials
方法的处理程序:
@Test
public void testIt() {
when(sampleObject.verifyCredentials(Mockito.any(JsonObject.class), Mockito.any(Handler.class))).then(false);
// Do your test here
ArgumentCaptor<Handler<?>> captor = ArgumentCaptor.of(Handler.class);
Mockito.verify(sampleObject).verifyCredentials(Mockito.any(JsonObject.class), captor.capture());
Handler<?> handler = captor.getValue();
// Perform assertions
}