コード例 #1
0
        public void CreatesAMethod_WithOneParameters_Enumerable()
        {
            var method = InjectableMethodBuilder
                         .Create <MethodFuncTest>(nameof(MethodFuncTest.ExecuteEnumerable1))
                         .WithParameter <IConfigured1>()
                         .Compile <IEnumerable <IReturn> >();

            method.Should().NotBeNull();
            var serviceProvider = A.Fake <IServiceProvider>();
            var configured1     = A.Fake <IConfigured1>();
            var injected1       = A.Fake <IInjected1>();
            var injected2       = A.Fake <IInjected2>();
            var injected3       = A.Fake <IInjected3>();

            A.CallTo(() => serviceProvider.GetService(A <Type> ._)).Returns(null !);
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).Returns(injected1);
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).Returns(injected2);
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected3))).Returns(injected3);
            method(new MethodFuncTest(), serviceProvider, configured1);


            A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).MustHaveHappenedOnceExactly();
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).MustHaveHappenedOnceExactly();
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected3))).MustHaveHappenedOnceExactly();
        }
コード例 #2
0
        public void CreatesAMethod_With12Parameters()
        {
            var method = InjectableMethodBuilder
                         .Create <MethodFuncTest>(nameof(MethodFuncTest.Execute12))
                         .WithParameter <IConfigured1>()
                         .WithParameter <IConfigured2>()
                         .WithParameter <IConfigured3>()
                         .WithParameter <IConfigured4>()
                         .WithParameter <IConfigured5>()
                         .WithParameter <IConfigured6>()
                         .WithParameter <IConfigured7>()
                         .WithParameter <IConfigured8>()
                         .WithParameter <IConfigured9>()
                         .WithParameter <IConfigured10>()
                         .WithParameter <IConfigured11>()
                         .WithParameter <IConfigured12>()
                         .Compile();

            method.Should().NotBeNull();
            var serviceProvider = A.Fake <IServiceProvider>();
            var configured1     = A.Fake <IConfigured1>();
            var configured2     = A.Fake <IConfigured2>();
            var configured3     = A.Fake <IConfigured3>();
            var configured4     = A.Fake <IConfigured4>();
            var configured5     = A.Fake <IConfigured5>();
            var configured6     = A.Fake <IConfigured6>();
            var configured7     = A.Fake <IConfigured7>();
            var configured8     = A.Fake <IConfigured8>();
            var configured9     = A.Fake <IConfigured9>();
            var configured10    = A.Fake <IConfigured10>();
            var configured11    = A.Fake <IConfigured11>();
            var configured12    = A.Fake <IConfigured12>();
            var injected1       = A.Fake <IInjected1>();
            var injected2       = A.Fake <IInjected2>();

            A.CallTo(() => serviceProvider.GetService(A <Type> ._)).Returns(null !);
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).Returns(injected1);
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).Returns(injected2);
            method(
                new MethodFuncTest(),
                serviceProvider,
                configured1,
                configured2,
                configured3,
                configured4,
                configured5,
                configured6,
                configured7,
                configured8,
                configured9,
                configured10,
                configured11,
                configured12
                );

            A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).MustHaveHappenedOnceExactly();
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).MustHaveHappenedOnceExactly();
        }
コード例 #3
0
        public void MapsActionAndExecutes()
        {
            var methodFuncTestMock = A.Fake <MethodFuncTest>();

            var action = InjectableMethodBuilder
                         .Create <MethodFuncTest>(nameof(MethodFuncTest.Execute))
                         .Compile();

            action(methodFuncTestMock, A.Fake <IServiceProvider>());

            A.CallTo(() => methodFuncTestMock.Execute()).MustHaveHappenedOnceExactly();
        }
コード例 #4
0
        public void HandlesStaticFunctions()
        {
            var serviceProviderMock = A.Fake <IServiceProvider>();

            A.CallTo(() => serviceProviderMock.GetService(A <Type> ._)).Returns(A.Fake <IConfigured1>());
            var action = InjectableMethodBuilder
                         .Create(typeof(MethodFuncTestStatic), nameof(MethodFuncTestStatic.Execute))
                         .CompileStatic();

            action(serviceProviderMock);

            A.CallTo(() => serviceProviderMock.GetService(typeof(IConfigured1))).MustHaveHappened();
        }
コード例 #5
0
        public void HandlesOutheritedTypes()
        {
            var serviceProviderMock = A.Fake <IServiceProvider>();

            A.CallTo(() => serviceProviderMock.GetService(A <Type> ._)).Returns(null !);
            var methodFuncTest = A.Fake <MethodFuncTest3>();
            var action         = InjectableMethodBuilder
                                 .Create <MethodFuncTest3>(nameof(MethodFuncTest3.Execute))
                                 .WithParameter <IConfigured1Sub>()
                                 .Compile();

            action(methodFuncTest, serviceProviderMock, new Configured1Sub());

            A.CallTo(() => serviceProviderMock.GetService(A <Type> .Ignored)).MustNotHaveHappened();
        }
コード例 #6
0
        public void HandlesInheritedTypes()
        {
            var serviceProviderMock = A.Fake <IServiceProvider>();

            A.CallTo(() => serviceProviderMock.GetService(A <Type> ._)).Returns(null !);
            var    methodFuncTest = A.Fake <MethodFuncTest2>();
            Action a = () =>
            {
                InjectableMethodBuilder
                .Create <MethodFuncTest2>(nameof(MethodFuncTest2.Execute))
                .WithParameter <IConfigured1>()
                .Compile();
            };

            a.Should().Throw <ArgumentException>();
        }
コード例 #7
0
        public void HandlesInheritedValues()
        {
            var serviceProviderMock = A.Fake <IServiceProvider>();

            A.CallTo(() => serviceProviderMock.GetService(A <Type> ._)).Returns(null !);
            var methodFuncTest = A.Fake <MethodFuncTest>();
            var action         = InjectableMethodBuilder
                                 .Create <MethodFuncTest>(nameof(MethodFuncTest.Execute))
                                 .WithParameter <IConfigured1>()
                                 .Compile();

            action(methodFuncTest, serviceProviderMock, new Configured1());

            A.CallTo(() => methodFuncTest.Execute(
                         A <IConfigured1> .That.Matches(x => x.GetType() == typeof(Configured1)))
                     ).MustHaveHappened();
            A.CallTo(() => serviceProviderMock.GetService(A <Type> .Ignored)).MustNotHaveHappened();
        }
コード例 #8
0
        public void CreatesAMethod_WithZeroParameters_UsingTypeForMethod()
        {
            var method = InjectableMethodBuilder
                         .Create(typeof(MethodFuncTest), nameof(MethodFuncTest.ExecuteReturn0))
                         .Compile <bool>();

            method.Should().NotBeNull();
            var serviceProvider = A.Fake <IServiceProvider>();
            var injected1       = A.Fake <IInjected1>();
            var injected2       = A.Fake <IInjected2>();

            A.CallTo(() => serviceProvider.GetService(A <Type> ._)).Returns(null !);
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).Returns(injected1);
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).Returns(injected2);
            method(new MethodFuncTest(), serviceProvider);

            A.CallTo(() => serviceProvider.GetService(typeof(IInjected1))).MustHaveHappenedOnceExactly();
            A.CallTo(() => serviceProvider.GetService(typeof(IInjected2))).MustHaveHappenedOnceExactly();
        }
コード例 #9
0
        public void MapsConfiguredParameterToAction()
        {
            var serviceProviderMock = A.Fake <IServiceProvider>();

            A.CallTo(() => serviceProviderMock.GetService(A <Type> ._)).Returns(null !);
            A.CallTo(() => serviceProviderMock.GetService(typeof(IInjected1))).Returns(A.Fake <IInjected1>());
            A.CallTo(() => serviceProviderMock.GetService(typeof(IInjected2))).Returns(A.Fake <IInjected2>());
            A.CallTo(() => serviceProviderMock.GetService(typeof(IInjected3))).Returns(null !);

            var serviceProvider    = serviceProviderMock;
            var methodFuncTestMock = A.Fake <MethodFuncTest>();

            var action = InjectableMethodBuilder
                         .Create <MethodFuncTest>(nameof(MethodFuncTest.Execute1))
                         .WithParameter <IConfigured1>()
                         .Compile();

            action(methodFuncTestMock, serviceProvider, A.Fake <IConfigured1>());
            A.CallTo(() => methodFuncTestMock.Execute1(A <IConfigured1> .Ignored, A <IInjected1> .Ignored, A <IInjected2> .Ignored, A <IInjected3> .Ignored)).MustHaveHappenedOnceExactly();
        }