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

标签 java mockito vert.x

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/

相关文章:

Java 图像连接组件

java - 当 Firebase 和 Android 中有新节点时,我的应用程序不断跳回 Activity

java - Powermock 的问题

redis - 使用RedisAPI的Vertx 3.7.0+-HMSET

Java:如何使用 Vertx 按顺序运行连续的异步调用?

java - 正则表达式字符长度限制未通过单元测试

java - Appium:UiAutomator 意外退出,代码为 0,信号为 null

java - 使用 Mockito/Power Mockito 模拟私有(private)方法

java - 使用 Mockito 的通用 "any()"方法

java - 数据相关测试