Exemple #1
0
        public void Resolve_using_request_can_get_registered_service_without_name(IServiceRegistrationProvider provider,
                                                                                  [Registration] IServiceRegistration registration,
                                                                                  ResolutionRequest request)
        {
            // Arrange
            var sut      = GetSut(provider);
            var instance = new SampleServiceImplementationOne();

            Mock.Get(provider)
            .Setup(x => x.CanFulfilRequest(request))
            .Returns(false);
            Mock.Get(provider)
            .Setup(x => x.Get(request))
            .Returns((IServiceRegistration)null);
            Mock.Get(provider)
            .Setup(x => x.CanFulfilRequest(It.Is <ResolutionRequest>(r => r.ServiceType == request.ServiceType && r.Name == null)))
            .Returns(true);
            Mock.Get(provider)
            .Setup(x => x.Get(It.Is <ResolutionRequest>(r => r.ServiceType == request.ServiceType && r.Name == null)))
            .Returns(registration);
            Mock.Get(registration)
            .Setup(x => x.GetFactoryAdapter(request))
            .Returns(new InstanceFactory(instance));

            // Act
            var result = sut.Resolve(request);

            // Assert
            Assert.That(result.ResolvedObject, Is.SameAs(instance));
        }
        public void Has_returns_true_for_a_named_service_type_after_it_is_added([Registration(ServiceType = typeof(ISampleService), Name = "A name")] IServiceRegistration registration,
                                                                                ResolvedServiceCache sut,
                                                                                SampleServiceImplementationOne instance)
        {
            // Act
            sut.Add(registration, instance);
            var result = sut.Has(new ServiceRegistrationKey(typeof(ISampleService), registration.Name));

            // Assert
            Assert.That(result, Is.True);
        }
        public void TryGet_returns_cached_instance_for_an_added_service([Registration(ServiceType = typeof(ISampleService))] IServiceRegistration registration,
                                                                        ResolvedServiceCache sut,
                                                                        SampleServiceImplementationOne instance)
        {
            // Act
            sut.Add(registration, instance);
            object cached;
            var    result = sut.TryGet(registration, out cached);

            // Assert
            Assert.That(result, Is.True);
            Assert.That(cached, Is.SameAs(instance));
        }
        public void RegisterInstance_can_create_an_instance_registration(RegistrationHelper sut,
                                                                         SampleServiceImplementationOne instance)
        {
            // Act
            sut.RegisterInstance(instance);

            // Assert
            var registrations = sut.GetRegistrations();

            Assert.That(registrations, Has.Some.InstanceOf <InstanceRegistration>());
            var matchingReg = registrations.FirstOrDefault(x => x is InstanceRegistration);

            Assert.That(matchingReg.ServiceType, Is.EqualTo(typeof(SampleServiceImplementationOne)));
        }
        public void RegisterInstance_uses_inferred_type(RegistrationHelper sut,
                                                        SampleServiceImplementationOne instance)
        {
            // Act
            ISampleService regInstance = instance;

            sut.RegisterInstance(regInstance);

            // Assert
            var registrations = sut.GetRegistrations();

            Assert.That(registrations, Has.Some.InstanceOf <InstanceRegistration>());
            var matchingReg = registrations.FirstOrDefault(x => x is InstanceRegistration);

            Assert.That(matchingReg.ServiceType, Is.EqualTo(typeof(ISampleService)));
        }
        public void Can_resolve_an_instance_lazily()
        {
            // Arrange
            var hasBeenResolved = false;

            var container = Container.CreateBuilder().SupportResolvingLazyInstances().Build();

            container.AddRegistrations(r => {
                r.RegisterFactory(() => {
                    var output      = new SampleServiceImplementationOne();
                    hasBeenResolved = true;
                    return(output);
                })
                .As <ISampleService>();
            });

            // Act
            var result = container.Resolve <Lazy <ISampleService> >();

            // Assert
            Assert.That(hasBeenResolved, Is.False);
            Assert.That(result.Value, Is.InstanceOf <SampleServiceImplementationOne>());
            Assert.That(hasBeenResolved, Is.True);
        }
        public void Has_returns_false_for_a_service_which_was_added_under_a_different_name([Registration(ServiceType = typeof(ISampleService), Name = "A name")] IServiceRegistration registration,
                                                                                           ResolvedServiceCache sut,
                                                                                           SampleServiceImplementationOne instance)
        {
            // Act
            sut.Add(registration, instance);
            var result = sut.Has(new ServiceRegistrationKey(typeof(SampleServiceImplementationOne), "Other name"));

            // Assert
            Assert.That(result, Is.False);
        }