Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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());
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }