gpt4 book ai didi

java - 如何在 CompletableFuture.get() 调用上引发异常?

转载 作者:行者123 更新时间:2023-11-30 02:06:14 31 4
gpt4 key购买 nike

有没有办法让mockito在CompletableFuture.get()调用上抛出异常,而不仅仅是异步方法?

例如,给出以下(不正确的)测试用例:

@Test
public void whenRunnerThrows_thenReturn5xx() throws Exception {
when(service.runAsync(any(),any())).thenThrow(new Exception(""));

mvc.perform(post("/test")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"name\":\"test\"}"))
.andExpect(status().is5xxServerError());
}

测试期间调用 service.runAsync() 时,会抛出异常,这是有道理的。但是,当(Spring Boot)应用程序运行时,相同的异常只会在返回的 CompletableFuture::get 上作为 ExecutionException 原因抛出。

编写这样的测试的正确方法是什么,以便在单元测试中与运行应用程序时同时抛出异常?

最佳答案

正如 Sotirios 指出的,您可以创建一个 CompletableFuture 并使其完成并排除异常。下面是代码供其他人引用:

@Test
public void whenRunnerThrows_thenReturn5xx() throws Exception {
CompletableFuture<String> badFuture = new CompletableFuture<>();
badFuture.completeExceptionally(new Exception(""));
when(service.runAsync(any(),any())).thenReturn(badFuture);

mvc.perform(post("/test")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"name\":\"test\"}"))
.andExpect(status().is5xxServerError());
}

关于java - 如何在 CompletableFuture.get() 调用上引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51251747/

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