public void Intercept_CreatesObjectLazily_CallsInvokeMethod()
        {
            //Assign
            var typeContext = Substitute.For <AbstractTypeCreationContext>();
            var config      = Substitute.For <AbstractTypeConfiguration>();
            var service     = Substitute.For <IAbstractService>();

            var args = new ObjectConstructionArgs(
                null,
                typeContext,
                config,
                service
                );

            var invocation = Substitute.For <IInvocation>();

            invocation.Method.Returns(typeof(StubClass).GetMethod("CalledMe"));
            service.InstantiateObject(typeContext).Returns(new StubClass());

            var interceptor = new LazyObjectInterceptor(args);

            //Act
            interceptor.Intercept(invocation);

            //Assert
            Assert.IsTrue((bool)invocation.ReturnValue);
        }
        public void Intercept_CreatesObjectLazily_CallsInvokeMethod()
        {
            //Assign
            var typeContext = Substitute.For <AbstractTypeCreationContext>();
            var options     = new GetOptions();

            typeContext.Options = options;

            var config  = Substitute.For <AbstractTypeConfiguration>();
            var service = Substitute.For <IAbstractService>();

            var args = new ObjectConstructionArgs(
                null,
                typeContext,
                config,
                service
                );

            var invocation = Substitute.For <IInvocation>();

            invocation.Method.Returns(typeof(StubClass).GetMethod("CalledMe"));
            service.InstantiateObject(typeContext).Returns(new StubClass());

            var interceptor = new LazyObjectInterceptor(args, new LazyLoadingHelper());

            //Act
            interceptor.Intercept(invocation);

            //Assert
            invocation.Received(1).Proceed();
        }