//private static void CreateSimpleServiceStub<TService>(TService serviceImpl, IGrpcMethodBinder methodBinder) where TService : class
        //{
        //    var builder = new GrpcServiceStubBuilder<TService>(new ProtobufSerializer());
        //    var hostMock = new Mock<IRpcServiceHostImpl>(MockBehavior.Strict);
        //    var serviceImplProviderMock = new Mock<IServiceImplProvider>();
        //    serviceImplProviderMock.Setup(p => p.GetServiceImpl<TService>(It.IsAny<RpcObjectId>())).Returns(serviceImpl);
        //    hostMock.Setup(p => p.ServiceImplProvider).Returns(serviceImplProviderMock.Object);
        //    hostMock.Setup(p => p.CallInterceptors).Returns(ImmutableArray<RpcHostCallInterceptor>.Empty);
        //    builder.GenerateOperationHandlers(hostMock.Object, methodBinder);
        //}

        private static void CreateSimpleServiceStub <TService>(TService serviceImpl, IGrpcMethodBinder methodBinder) where TService : class
        {
            var builder = new GrpcServiceStubBuilder <TService>(new RpcServiceOptions <TService> {
                Serializer = new ProtobufRpcSerializer()
            });

            var hostMock = new Mock <IRpcServerCore>(MockBehavior.Strict);

            var servicePublisherMock           = new Mock <IRpcServicePublisher>(MockBehavior.Strict);
            var serviceDefinitionsProviderMock = new Mock <IRpcServiceDefinitionsProvider>(MockBehavior.Strict);

            serviceDefinitionsProviderMock.Setup(p => p.GetServiceOptions(It.IsAny <Type>())).Returns((RpcServerOptions)null);

            var serviceImplProviderMock = new Mock <IRpcServiceActivator>(MockBehavior.Strict);

            serviceImplProviderMock.Setup(p => p.GetActivatedService <TService>(It.IsAny <IServiceProvider>(), It.IsAny <RpcObjectId>())).Returns(new ActivatedService <TService>(serviceImpl, null));


            hostMock.Setup(h => h.ServicePublisher).Returns(servicePublisherMock.Object);
            hostMock.Setup(h => h.ServiceDefinitionsProvider).Returns(serviceDefinitionsProviderMock.Object);
            hostMock.Setup(h => h.ServiceActivator).Returns(serviceImplProviderMock.Object);
            hostMock.Setup(h => h.CallInterceptors).Returns(ImmutableArrayList <RpcServerCallInterceptor> .Empty);
            hostMock.Setup(h => h.ServiceProvider).Returns((IServiceProvider)null);
            hostMock.Setup(h => h.AllowAutoPublish).Returns(false);
            hostMock.Setup(h => h.Serializer).Returns(DefaultSerializer);
            hostMock.Setup(h => h.CustomFaultHandler).Returns((RpcServerFaultHandler)null);
            hostMock.Setup(p => p.HasContextAccessor).Returns(false);
            hostMock.Setup(p => p.LoggerFactory).Returns(NullLoggerFactory.Instance);

            builder.GenerateOperationHandlers(hostMock.Object, methodBinder);
        }
        public IReadOnlyList <object> GenerateMethodStubs <TService>(IRpcServerCore rpcServer) where TService : class
        {
            var builder = new GrpcServiceStubBuilder <TService>(RpcBuilderUtil.GetServiceInfoFromType(typeof(TService)), null);

            var binder = new TestGrpcMethodBinder();

            builder.GenerateOperationHandlers(rpcServer, binder);

            return(binder.stubs);
        }