Ejemplo n.º 1
0
        public void ServiceProviderSystemAPI_Test()
        {
            var coreService = new Mock <IServiceContainer>();
            IDictionary <Type, object> serviceContainer = new Dictionary <Type, object>();

            coreService.Setup(c => c.RegisterService(It.IsAny <IDummyComposable>())).Callback <IDummyComposable>(d =>
                                                                                                                 serviceContainer
                                                                                                                 .Add(typeof(IDummyComposable), d));
            coreService.Setup(c => c.AvailableServices())
            .Returns(() => serviceContainer.Keys.Select(service => service.FullName));
            coreService.Setup(c => c.Get <IDummyComposable>())
            .Returns(() => (IDummyComposable)serviceContainer[typeof(IDummyComposable)]);
            coreService.Setup(c => c.Get(typeof(IDummyComposable)))
            .Returns(() => (IDummyComposable)serviceContainer[typeof(IDummyComposable)]);
            var dummyService = new DummyService();
            var provider     = new ServiceRegistrationProvider(coreService.Object);

            provider.RegisterService <IDummyComposable>(dummyService);
            Assert.Contains(typeof(IDummyComposable), serviceContainer.Keys);
            Assert.Equal(dummyService, serviceContainer[typeof(IDummyComposable)]);

            var serviceProvider = new ServiceProvider(coreService.Object,
                                                      new List <string>()
            {
                typeof(IDummyComposable).FullName
            });

            Assert.Equal(dummyService, serviceProvider.ToServiceProvider().GetService(typeof(IDummyComposable)));
        }
        /// <summary>
        /// configure uses the service registrar to ensure complete service registration.
        /// i'd like this to be injectable but i don't have control at this level.
        /// so i have to use a static factory
        /// </summary>
        /// <param name="builder"></param>
        public void Configure(IWebJobsBuilder builder)
        {
            builder.AddDependencyInjection();

            var registrar = ServiceRegistrationProvider.CreateService(Assembly.GetExecutingAssembly());

            registrar.Compose(builder.Services);
        }
        public void TheSystemUnderTestSupportsItsServiceContract()
        {
            // arrange
            var sut = ServiceRegistrationProvider.CreateService(GetAssemblyfor <ServiceRegistrationProvider>());

            // act / assert
            Assert.IsAssignableFrom <IRegisterServices>(sut);
        }