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); }