spring-boot - 如何为使用泛型的拦截器编写测试类
问题描述
尝试为以下也使用泛型的拦截器类编写 Juint 测试用例时,我遇到了一个问题。有关如何使用 Junit 和 Mockito 处理此问题的任何线索。
import io.grpc.Attributes;
import io.grpc.Context;
import io.grpc.Contexts;
import io.grpc.Metadata;
import io.grpc.ServerCall;
import io.grpc.ServerCall.Listener;
import io.grpc.ServerCallHandler;
import io.grpc.ServerInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.lognet.springboot.grpc.GRpcGlobalInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
@GRpcGlobalInterceptor
@Slf4j
public class CommonInterceptor implements ServerInterceptor {
@Autowired
private GrpcRequestMetadataUtil requestMetadataUtil;
public static final Context.Key<Object> USER_IDENTITY = Context.key("identity");
public <ReqT, RespT> Listener<ReqT> interceptCall(final ServerCall<ReqT, RespT> serverCall, final Metadata metadata,
final ServerCallHandler<ReqT, RespT> serverCallHandler) {
log.info("Enters on method interceptCall in CommonInterceptor: ");
Context context = Context.current().withValue(USER_IDENTITY,
metadata.get(Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER)));
logRequestMetadata(serverCall.getAttributes(), metadata);
return Contexts.interceptCall(context, serverCall, metadata, serverCallHandler);
}
private void logRequestMetadata(final Attributes attribute, final Metadata metadata) {
try {
log.info("Request Meta Properties [" + requestMetadataUtil.getRequestMetadataLog(attribute, metadata) + "]");
} catch (Exception exception) {
log.error("Error in CommonInterceptor@logRequestMetadata", exception);
}
}
}
解决方案
推荐阅读
- c# - 如何模拟从 Azure Function 调用的方法?
- xcode - 如何使用 XCode 的 mergetool 解决冲突?
- sql - TypeORM:@JoinTable 三列
- android - 将令牌从一个应用程序发送到另一个应用程序,避免使用意图选择器
- matlab - 如何保持信号simulink matlab的2个峰值
- ruby - 为什么要私有封装私有常量?
- angular - ng build --prod 非常慢
- javascript - 为什么我的 MutationObserver 对象没有断开连接?
- php - 在 WP_Mail 标头中设置“发件人地址”会导致电子邮件进入垃圾邮件
- sql - 强制为左连接返回空值