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
}
关于java - 如何使用mockito在vertx中模拟Handler<AsyncResult<Void>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49396143/