public void RegisterTransientWithFactoryAndContainerProvider() { var container = new ContainerExtension(); container.Register <IServiceMock, ServiceMock>(nameof(ServiceMock)); container.Register <IServiceMock>(CreateServiceWithContainerProvider); var resolved = container.Resolve <IServiceMock>(); Assert.NotNull(resolved); Assert.IsType <ServiceMock>(resolved); var serviceMock = resolved as ServiceMock; var resolved2 = container.Resolve <IServiceMock>(); Assert.NotSame(resolved, resolved2); }
public void LocatesImplementationType() { var container = new ContainerExtension(); container.Register <IServiceMock, ServiceMock>(); var type = container.GetRegistrationType(typeof(IServiceMock)); Assert.NotNull(type); Assert.Equal(typeof(ServiceMock), type); }
public void RegisterNamedConcreteTypeCreatesTransient() { var container = new ContainerExtension(); container.Register <ServiceMock>("Test"); var resolved1 = container.Resolve <ServiceMock>("Test"); var resolved2 = container.Resolve <ServiceMock>("Test"); Assert.NotNull(resolved1); Assert.NotSame(resolved1, resolved2); }
public void RegisterServiceMappingCreatesTransient() { var container = new ContainerExtension(); container.Register <IServiceMock, ServiceMock>(); var resolved1 = container.Resolve <IServiceMock>(); var resolved2 = container.Resolve <IServiceMock>(); Assert.NotNull(resolved1); Assert.NotNull(resolved2); Assert.IsType <ServiceMock>(resolved1); Assert.IsType <ServiceMock>(resolved2); Assert.NotSame(resolved1, resolved2); }
public void GetErrorsLocatesTargetInvocationException() { ContainerLocator.ResetContainer(); var container = new ContainerExtension(); ContainerLocator.SetContainerExtension(() => container); container.Register <object, BadView>("BadView"); var ex = Record.Exception(() => container.Resolve <object>("BadView")); Assert.IsType <ContainerResolutionException>(ex); var cre = ex as ContainerResolutionException; var errors = cre.GetErrors(); Assert.Contains(errors, x => x.Value is TargetInvocationException); }
public void GetErrorsLocatesIssueWithBadView() { ContainerLocator.ResetContainer(); var container = new ContainerExtension(); ContainerLocator.SetContainerExtension(() => container); container.Register <object, BadView>("BadView"); var ex = Record.Exception(() => container.Resolve <object>("BadView")); Assert.IsType <ContainerResolutionException>(ex); var cre = ex as ContainerResolutionException; var errors = cre.GetErrors(); Assert.Contains(typeof(BadView), errors.Types); }
public void RegisterSupportsFuncInjection() { var container = new ContainerExtension(); container.Register <IServiceMock, ServiceMock>(); var func = container.Resolve <Func <IServiceMock> >(); Assert.NotNull(func); var instance = func(); Assert.IsType <ServiceMock>(instance); var func2 = container.Resolve <Func <IServiceMock> >(); Assert.NotSame(instance, func2()); }
public void RegisterTransientWithFactory() { var container = new ContainerExtension(); container.Register <IServiceMock>(CreateService); var resolved = container.Resolve <IServiceMock>(); Assert.NotNull(resolved); Assert.IsType <ServiceMock>(resolved); var serviceMock = resolved as ServiceMock; Assert.Equal("Created through a factory", serviceMock.SomeProperty); var resolved2 = container.Resolve <IServiceMock>(); Assert.NotSame(resolved, resolved2); }
public void RegisterNamedServiceMappingCreatesTransient() { var container = new ContainerExtension(); container.Register <IServiceMock, ServiceMock>("Test"); var resolved1 = container.Resolve <IServiceMock>("Test"); var resolved2 = container.Resolve <IServiceMock>("Test"); var ex = Record.Exception(() => container.Resolve <IServiceMock>()); Assert.NotNull(ex); Assert.NotNull(resolved1); Assert.NotNull(resolved2); Assert.IsType <ServiceMock>(resolved1); Assert.IsType <ServiceMock>(resolved2); Assert.NotSame(resolved1, resolved2); }
public void GetErrorsDoesNotThrowException() { ContainerLocator.ResetContainer(); var container = new ContainerExtension(); ContainerLocator.SetContainerExtension(() => container); container.Register <object, BadView>("BadView"); var ex = Record.Exception(() => container.Resolve <object>("BadView")); Assert.IsType <ContainerResolutionException>(ex); var cre = ex as ContainerResolutionException; ContainerResolutionErrorCollection errors = null; var ex2 = Record.Exception(() => errors = cre.GetErrors()); Assert.Null(ex2); }
public void RegisterSupportsLazyInjection() { var container = new ContainerExtension(); container.Register <IServiceMock, ServiceMock>(); var lazy = container.Resolve <Lazy <IServiceMock> >(); Assert.NotNull(lazy); Assert.False(lazy.IsValueCreated); var instance = lazy.Value; Assert.IsType <ServiceMock>(instance); var lazy2 = container.Resolve <Lazy <IServiceMock> >(); Assert.NotSame(instance, lazy2.Value); }
public void RegisterScopedWithFactoryAndContainerProvider() { var container = new ContainerExtension(); container.Register <IServiceMock, ServiceMock>(nameof(ServiceMock)); container.RegisterScoped <IServiceMock>(CreateServiceWithContainerProvider); var resolved1 = container.Resolve <IServiceMock>(); Assert.NotNull(resolved1); Assert.IsType <ServiceMock>(resolved1); var resolved2 = container.Resolve <IServiceMock>(); Assert.Same(resolved1, resolved2); container.CreateScope(); var resolved3 = container.Resolve <IServiceMock>(); Assert.NotSame(resolved2, resolved3); }