Spring boot 如何为使用泛型的拦截器编写测试类

Spring boot 如何为使用泛型的拦截器编写测试类,spring-boot,junit,mockito,grpc,Spring Boot,Junit,Mockito,Grpc,我在尝试为同样使用泛型的拦截类编写JUnit测试用例时遇到了一个问题。关于如何使用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.Server

我在尝试为同样使用泛型的拦截类编写JUnit测试用例时遇到了一个问题。关于如何使用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);
        }
    }

}
导入io.grpc.Attributes;
导入io.grpc.Context;
导入io.grpc.context;
导入io.grpc.Metadata;
导入io.grpc.ServerCall;
导入io.grpc.ServerCall.Listener;
导入io.grpc.ServerCallHandler;
导入io.grpc.ServerInterceptor;
导入lombok.extern.slf4j.slf4j;
导入org.lognet.springboot.grpc.GRpcGlobalInterceptor;
导入org.springframework.beans.factory.annotation.Autowired;
@GRpcGlobalInterceptor
@Slf4j
公共类CommonInterceptor实现ServerInterceptor{
@自动连线
私有GrpcRequestMetadataUtil requestMetadataUtil;
公共静态最终上下文.Key USER_IDENTITY=Context.Key(“IDENTITY”);
公共侦听器侦听调用(最终服务器调用服务器调用、最终元数据、,
最终服务器调用处理程序(ServerCallHandler){
info(“在CommonInterceptor:中输入方法interceptCall”);
Context Context=Context.current().withValue(用户标识,
get(metadata.Key.of(“authorization”,metadata.ASCII_STRING_MARSHALLER));
logRequestMetadata(serverCall.getAttributes(),元数据);
return Contexts.interceptCall(context,serverCall,metadata,serverCallHandler);
}
私有void logRequestMetadata(最终属性,最终元数据){
试一试{
log.info(“请求元属性[“+requestMetadataUtil.getRequestMetadataLog(属性,元数据)+“]”);
}捕获(异常){
log.error(“中的错误CommonInterceptor@logRequestMetadata“,例外情况);
}
}
}

您能否向代码示例展示您尝试过的内容?