如何在java Junit中模拟S3AsyncClient

发布于 2025-01-20 14:52:59 字数 11198 浏览 0 评论 0原文

我正在尝试为此代码创建 JUnit 测试:

public class S3Connection {

private final Logger logger;
private final S3AsyncClient client;
private final String path;
private final String bucketName;


public S3Connection(Logger logger, S3AsyncClient client, String path, String bucketName) {
    this.logger = logger;
    this.client = client;
    this.path = path;
    this.bucketName = bucketName;
}

public Future<String> sendAsync(JsonNode event) throws S3Exception{
    JsonNode attributes = event.findValue("attributes");
    String content = getAttribute(attributes , "content");
    if(content == null){
        logger.error("HTML content does not exist in the event");
        return null;
    }
    int contentLength;
    AsyncRequestBody asyncRequestBody;
    contentLength = content.length();
    asyncRequestBody = AsyncRequestBody.fromString(content);

    logger.info("uploading file={} to bucket={}",  path, bucketName);

    PutObjectRequest putObjRequest = PutObjectRequest.builder()
            .bucket(bucketName)
            .key(path)
            .contentLength((long) contentLength).build();

    CompletableFuture<String> response = client.putObject(putObjRequest, asyncRequestBody).thenApply(
            getPutObjectResponse -> {
                logger.info("Got response from S3 upload={}", getPutObjectResponse.eTag());
                return getPutObjectResponse.eTag();
            });
    response.exceptionally(throwable -> {
        logger.error("Exception occurred while uploading file={}",path);
        try {
            throw new Exception(throwable.getMessage());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    });
    return response;
}

private String getAttribute(JsonNode node, String k){
    String v = null;
    if(node.has(k)){
        v =  node.findValue(k).asText();
    }
    return v;
}

这里是我的测试:

class S3ConnectionTest {
  
  @Mock
  S3AsyncClient client;
  S3Connection s3Connection;
  String topic = "test-topic";
  ObjectMapper mapper;
  JsonNode json;
  @Mock
  Logger logger;
  AuditEventJsonMapper jsonMapper;
  private String event = "{\"attributes\":{\"contentType\":\"text\" , \"content\": \"html content\"},\"flowDescriptor\":\"CONNECTION_TO_REMOTE\" ,\"providerId\": \"provider\"}";
  PutObjectRequest putObjRequest;
  AsyncRequestBody asyncRequestBody;
  @BeforeEach
  public void setup() throws JsonProcessingException {
    ExecutorService executor = new ThreadPoolExecutor(1, 1, 10L, TimeUnit.SECONDS, new LinkedBlockingQueue(100), (new ThreadFactoryBuilder()).threadNamePrefix("html-audit").build());
    S3Configuration configuration = new S3Configuration("","anyString()","us-west-2","XX","XX","dev",executor);
    client = mock(S3AsyncClient.class);
    mapper = new ObjectMapper();
    json = mapper.readTree(event);
    MockProducer<String, String> mock =
            new MockProducer<>(true, new StringSerializer(), new StringSerializer());
    connection = new KafkaConnection(topic, mock, logger);
    s3Connection = new S3Connection(logger , client , "path" , "bucket" ,null, connection);
    putObjRequest = PutObjectRequest.builder()
            .bucket("bucket")
            .key("path")
            .contentLength((long) 10).build();
    asyncRequestBody = AsyncRequestBody.fromString("encryptedContent");
  }
  

  @Test
  public void shouldSendAuditToS3AndProducer(){


    when(client.putObject(putObjRequest , asyncRequestBody)).thenReturn(any(CompletableFuture.class));
    Future<String> record = s3Connection.sendAsync(json);

  }
}

并收到此错误:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的使用无效!预计 3 名匹配者,记录 1 名: ->在 com.intuit.idx.wiauditor.s3.S3ConnectionTest.shouldSendAuditToS3AndProducer(S3ConnectionTest.java:90)

如果匹配器与原始值组合,则可能会发生此异常: //不正确: someMethod(any(), "原始字符串");使用匹配器时,所有参数都必须由匹配器提供。例如: //正确的: someMethod(any(), eq("匹配器的字符串"));

有关详细信息,请参阅 Matchers 类的 javadoc。

at com.intuit.idx.wiauditor.s3.S3Connection.sendAsync(S3Connection.java:55)
at com.intuit.idx.wiauditor.s3.S3ConnectionTest.shouldSendAuditToS3AndProducer(S3ConnectionTest.java:91)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)

I am trying to create JUnit test for this code:

public class S3Connection {

private final Logger logger;
private final S3AsyncClient client;
private final String path;
private final String bucketName;


public S3Connection(Logger logger, S3AsyncClient client, String path, String bucketName) {
    this.logger = logger;
    this.client = client;
    this.path = path;
    this.bucketName = bucketName;
}

public Future<String> sendAsync(JsonNode event) throws S3Exception{
    JsonNode attributes = event.findValue("attributes");
    String content = getAttribute(attributes , "content");
    if(content == null){
        logger.error("HTML content does not exist in the event");
        return null;
    }
    int contentLength;
    AsyncRequestBody asyncRequestBody;
    contentLength = content.length();
    asyncRequestBody = AsyncRequestBody.fromString(content);

    logger.info("uploading file={} to bucket={}",  path, bucketName);

    PutObjectRequest putObjRequest = PutObjectRequest.builder()
            .bucket(bucketName)
            .key(path)
            .contentLength((long) contentLength).build();

    CompletableFuture<String> response = client.putObject(putObjRequest, asyncRequestBody).thenApply(
            getPutObjectResponse -> {
                logger.info("Got response from S3 upload={}", getPutObjectResponse.eTag());
                return getPutObjectResponse.eTag();
            });
    response.exceptionally(throwable -> {
        logger.error("Exception occurred while uploading file={}",path);
        try {
            throw new Exception(throwable.getMessage());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    });
    return response;
}

private String getAttribute(JsonNode node, String k){
    String v = null;
    if(node.has(k)){
        v =  node.findValue(k).asText();
    }
    return v;
}

here my test:

class S3ConnectionTest {
  
  @Mock
  S3AsyncClient client;
  S3Connection s3Connection;
  String topic = "test-topic";
  ObjectMapper mapper;
  JsonNode json;
  @Mock
  Logger logger;
  AuditEventJsonMapper jsonMapper;
  private String event = "{\"attributes\":{\"contentType\":\"text\" , \"content\": \"html content\"},\"flowDescriptor\":\"CONNECTION_TO_REMOTE\" ,\"providerId\": \"provider\"}";
  PutObjectRequest putObjRequest;
  AsyncRequestBody asyncRequestBody;
  @BeforeEach
  public void setup() throws JsonProcessingException {
    ExecutorService executor = new ThreadPoolExecutor(1, 1, 10L, TimeUnit.SECONDS, new LinkedBlockingQueue(100), (new ThreadFactoryBuilder()).threadNamePrefix("html-audit").build());
    S3Configuration configuration = new S3Configuration("","anyString()","us-west-2","XX","XX","dev",executor);
    client = mock(S3AsyncClient.class);
    mapper = new ObjectMapper();
    json = mapper.readTree(event);
    MockProducer<String, String> mock =
            new MockProducer<>(true, new StringSerializer(), new StringSerializer());
    connection = new KafkaConnection(topic, mock, logger);
    s3Connection = new S3Connection(logger , client , "path" , "bucket" ,null, connection);
    putObjRequest = PutObjectRequest.builder()
            .bucket("bucket")
            .key("path")
            .contentLength((long) 10).build();
    asyncRequestBody = AsyncRequestBody.fromString("encryptedContent");
  }
  

  @Test
  public void shouldSendAuditToS3AndProducer(){


    when(client.putObject(putObjRequest , asyncRequestBody)).thenReturn(any(CompletableFuture.class));
    Future<String> record = s3Connection.sendAsync(json);

  }
}

and got this error:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 3 matchers expected, 1 recorded:
-> at com.intuit.idx.wiauditor.s3.S3ConnectionTest.shouldSendAuditToS3AndProducer(S3ConnectionTest.java:90)

This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(any(), "raw String"); When using matchers, all arguments have to be provided by matchers. For example:
//correct:
someMethod(any(), eq("String by matcher"));

For more info see javadoc for Matchers class.

at com.intuit.idx.wiauditor.s3.S3Connection.sendAsync(S3Connection.java:55)
at com.intuit.idx.wiauditor.s3.S3ConnectionTest.shouldSendAuditToS3AndProducer(S3ConnectionTest.java:91)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

却一份温柔 2025-01-27 14:52:59

该问题解决了:

when(client.putObject(any(PutObjectRequest.class) , any(AsyncRequestBody.class))).thenReturn(new CompletableFuture<>());

the issue resolved by:

when(client.putObject(any(PutObjectRequest.class) , any(AsyncRequestBody.class))).thenReturn(new CompletableFuture<>());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文