Java AWS异步处理程序的单元测试
如何为下面的代码编写单元测试Java AWS异步处理程序的单元测试,java,callback,amazon-sqs,Java,Callback,Amazon Sqs,如何为下面的代码编写单元测试 public CompletableFuture<String> sendMessage(final String message) { Preconditions.checkArgument(message != null, "Message can't be null"); CompletableFuture<SendMessageResult> completableFuture = new Compl
public CompletableFuture<String> sendMessage(final String message) {
Preconditions.checkArgument(message != null, "Message can't be null");
CompletableFuture<SendMessageResult> completableFuture = new CompletableFuture<>();
amazonSQSAsync.sendMessageAsync(sqsMessageRequestFactory.create(message), new AsyncHandler<SendMessageRequest, SendMessageResult>() {
@Override
public void onError(final Exception exception) {
completableFuture.completeExceptionally(exception);
}
@Override
public void onSuccess(final SendMessageRequest request, final SendMessageResult sendMessageResult) {
completableFuture.complete(sendMessageResult);
}
});
return completableFuture.thenApply(SendMessageResult::getMessageId)
.whenComplete(this::sentMessageAsyncResult)
.exceptionally(this::processException);
}
公共CompletableFuture sendMessage(最终字符串消息){
前提条件.checkArgument(message!=null,“message不能为null”);
CompletableFuture CompletableFuture=新的CompletableFuture();
amazonSQSAsync.sendMessageAsync(sqsMessageRequestFactory.create(message),new AsyncHandler(){
@凌驾
公共无效单错误(最终例外){
completableFuture.completeeexception(异常);
}
@凌驾
成功时公共无效(最终SendMessageRequest请求、最终SendMessageResult SendMessageResult){
completableFuture.complete(发送消息结果);
}
});
返回completableFuture.thenApply(SendMessageResult::getMessageId)
.whenComplete(此::sentMessageAsyncResult)
.例外情况(此::processException);
}
我试过了,但没用。我如何调用completablefuture,以便得到响应以检查断言。审判方式如下:
@Test
public void sendMessageSuccessful() {
final SendMessageResult sendMessageResult = new SendMessageResult().withMessageId(MESSAGE_ID);
final SendMessageRequest sendMessageRequest = new SendMessageRequest();
when(sqsMessageRequestFactory.create(anyString())).thenReturn(sendMessageRequest);
sqsAsyncClientImpl.sendMessage("any");
@SuppressWarnings("unchecked") ArgumentCaptor<AsyncHandler<SendMessageRequest, SendMessageResult>> argumentCaptor = ArgumentCaptor.forClass(AsyncHandler.class);
verify(amazonSQSAsync, timeout(100).times(1)).sendMessageAsync(eq(sendMessageRequest), argumentCaptor.capture());
argumentCaptor.getValue().onSuccess(sendMessageRequest, sendMessageResult);
}
@测试
public void sendMessageSuccessful(){
final SendMessageResult SendMessageResult=新的SendMessageResult(),带有消息ID(消息ID);
final SendMessageRequest SendMessageRequest=新SendMessageRequest();
当(sqsMessageRequestFactory.create(anyString())。然后返回(sendMessageRequest);
sqsAsyncClientImpl.sendMessage(“任何”);
@SuppressWarnings(“未选中”)ArgumentCaptor ArgumentCaptor=ArgumentCaptor.forClass(AsyncHandler.class);
验证(amazonsqasync,timeout(100).times(1)).sendMessageAsync(eq(sendMessageRequest),argumentCaptor.capture());
argumentCaptor.getValue().onSuccess(sendMessageRequest、sendMessageResult);
}