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


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
}

相关内容

  • 没有找到相关文章

最新更新