/// <inheritdoc cref="IMockedDependencyFactory" /> public IMockedDependency <T> CreateDecoratedDependency <T>(T decoratee) where T : notnull { Ensures.IsInterface <T>(); var arrangements = new ArrangementCollection(); var interceptor = InterceptorFactory.CreateInterceptorFor(MockBehavior.Partial, arrangements); var proxy = DynamicProxyFactory.CreateDecorator <T>(decoratee, interceptor); return(new MockedDependency <T>(arrangements, interceptor, proxy)); }
/// <inheritdoc cref="IMockedDependencyFactory" /> public IMockedDependency CreateDecoratedDependency(Type dependency, object decoratee) { Ensures.NotNull(dependency, nameof(dependency)); Ensures.IsInterface(dependency); var arrangements = new ArrangementCollection(); var interceptor = InterceptorFactory.CreateInterceptorFor(MockBehavior.Partial, arrangements); var proxy = DynamicProxyFactory.CreateDecorator(dependency, decoratee, interceptor); var mockedDependencyType = typeof(MockedDependency <>).MakeGenericType(dependency); var instance = Activator.CreateInstance(mockedDependencyType, new[] { arrangements, interceptor, proxy }); if (instance is IMockedDependency mockedDependency) { return(mockedDependency); } throw new InvalidOperationException("Invalid mocked dependency instance"); }