gpt4 book ai didi

java - 如何使用mockito在vertx中模拟Handler>?

转载 作者:行者123 更新时间:2023-12-01 19:56:47 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com