private IServiceProvider MockServiceProvider(ICodetableProvider codetableProvider = null, ICodetableDiscoveryRouteBuilder routeBuilder = null, CodetableDiscoveryOptions option = null)
        {
            var provider = codetableProvider == null ? Mock.Of<ICodetableProvider>() : codetableProvider;
            var builder = routeBuilder == null ? Mock.Of<ICodetableDiscoveryRouteBuilder>() : routeBuilder;
            var actionDescriptorsProvider = MockActionDescriptorsProvider();
            
            var serviceProvider = new Mock<IServiceProvider>();
            serviceProvider.Setup(svp => svp.GetService(typeof(ICodetableProvider))).Returns(provider);
            serviceProvider.Setup(svp => svp.GetService(typeof(ICodetableDiscoveryRouteBuilder))).Returns(builder);
            serviceProvider.Setup(svp => svp.GetService(typeof(IActionDescriptorCollectionProvider))).Returns(actionDescriptorsProvider);
            serviceProvider.Setup(svp => svp.GetService(typeof(IOptions<CodetableDiscoveryOptions>)))
                .Returns(Options.Create(option));

            return serviceProvider.Object;
        }
        private IServiceProvider MockServiceProvider(ICodetableProvider codetableProvider = null, ICodetableDiscoveryRouteBuilder routeBuilder = null, CodetableDiscoveryOptions option = null)
        {
            var provider = codetableProvider == null?Mock.Of <ICodetableProvider>() : codetableProvider;

            var builder = routeBuilder == null?Mock.Of <ICodetableDiscoveryRouteBuilder>() : routeBuilder;

            var actionDescriptorsProvider = MockActionDescriptorsProvider();

            var serviceProvider = new Mock <IServiceProvider>();

            serviceProvider.Setup(svp => svp.GetService(typeof(ICodetableProvider))).Returns(provider);
            serviceProvider.Setup(svp => svp.GetService(typeof(ICodetableDiscoveryRouteBuilder))).Returns(builder);
            serviceProvider.Setup(svp => svp.GetService(typeof(IActionDescriptorCollectionProvider))).Returns(actionDescriptorsProvider);
            serviceProvider.Setup(svp => svp.GetService(typeof(IOptions <CodetableDiscoveryOptions>)))
            .Returns(Options.Create(option));

            return(serviceProvider.Object);
        }