Пример #1
0
        public void CreateFromFactory_executes_factory_with_resolved_parameters([Frozen] IFulfilsResolutionRequests resolver,
                                                                                InstanceCreator sut,
                                                                                IFactoryAdapter factory,
                                                                                ResolutionPath path,
                                                                                IServiceRegistration registration,
                                                                                object resolved,
                                                                                [MockParam(typeof(string), Name = "Foo")] ParameterInfo paramOne,
                                                                                object paramOneValue,
                                                                                [MockParam(typeof(int), Name = "Bar")] ParameterInfo paramTwo,
                                                                                object paramTwoValue)
        {
            // Arrange
            Mock.Get(factory).SetupGet(x => x.RequiresParameterResolution).Returns(true);
            Mock.Get(factory).Setup(x => x.GetParameters()).Returns(new [] { paramOne, paramTwo });
            Mock.Get(resolver)
            .Setup(x => x.Resolve(It.Is <ResolutionRequest>(r => r.Name == paramOne.Name && r.ServiceType == paramOne.ParameterType)))
            .Returns(() => ResolutionResult.Success(path, paramOneValue));
            Mock.Get(resolver)
            .Setup(x => x.Resolve(It.Is <ResolutionRequest>(r => r.Name == paramTwo.Name && r.ServiceType == paramTwo.ParameterType)))
            .Returns(() => ResolutionResult.Success(path, paramTwoValue));
            Mock.Get(factory)
            .Setup(x => x.Execute(It.Is <object[]>(e => e.Length == 2 && e[0] == paramOneValue && e[1] == paramTwoValue)))
            .Returns(resolved);

            // Act
            var result = sut.CreateFromFactory(factory, path, registration);

            // Assert
            Mock.Get(factory)
            .Verify(x => x.Execute(It.Is <object[]>(e => e.Length == 2 && e[0] == paramOneValue && e[1] == paramTwoValue)), Times.Once);
            Assert.That(result, Is.SameAs(resolved));
        }
Пример #2
0
        public void CreateFromFactory_executes_factory_if_it_does_not_need_parameter_resolution([Frozen] IFulfilsResolutionRequests resolver,
                                                                                                InstanceCreator sut,
                                                                                                IFactoryAdapter factory,
                                                                                                ResolutionPath path,
                                                                                                IServiceRegistration registration,
                                                                                                object resolved)
        {
            // Arrange
            Mock.Get(factory).SetupGet(x => x.RequiresParameterResolution).Returns(false);
            Mock.Get(factory).Setup(x => x.Execute(It.Is <object[]>(e => e.Length == 0))).Returns(resolved);

            // Act
            var result = sut.CreateFromFactory(factory, path, registration);

            // Assert
            Mock.Get(factory).Verify(x => x.Execute(It.Is <object[]>(e => e.Length == 0)), Times.Once);
            Assert.That(result, Is.SameAs(resolved));
        }