/Source/Machine.Specifications.Tests/Machine.Testing/AutoMocking/MockingDependencyResolver.cs
C# | 53 lines | 46 code | 7 blank | 0 comment | 2 complexity | edc25c9f2057f3bf70a9fdbaefbcd908 MD5 | raw file
Possible License(s): MIT, CC-BY-SA-3.0
- using System;
- using System.Collections.Generic;
-
- using Machine.Container.Model;
- using Machine.Container.Services;
-
- using Rhino.Mocks;
-
- namespace Machine.Testing.AutoMocking
- {
- [ObsoleteEx(Message = "Use FluentAssertions or Mocking library of choice directly", RemoveInVersion = "0.9", TreatAsErrorFromVersion = "0.8")]
- public class MockingDependencyResolver : IActivatorResolver
- {
- #region Member Data
- readonly MockRepository _mocks;
- readonly Dictionary<Type, object> _objects = new Dictionary<Type, object>();
- #endregion
-
- #region MockingDependencyResolver()
- public MockingDependencyResolver(MockRepository mocks)
- {
- _mocks = mocks;
- }
- #endregion
-
- #region IActivatorResolver Members
- public IActivator ResolveActivator(IResolutionServices services, ServiceEntry entry)
- {
- if (entry.ServiceType.IsInterface)
- {
- return services.ActivatorFactory.CreateStaticActivator(entry, Get(entry.ServiceType));
- }
- return null;
- }
- #endregion
-
- #region Methods
- public TService Get<TService>()
- {
- return (TService)Get(typeof(TService));
- }
-
- public object Get(Type serviceType)
- {
- if (!_objects.ContainsKey(serviceType))
- {
- _objects[serviceType] = _mocks.DynamicMock(serviceType);
- }
- return _objects[serviceType];
- }
- #endregion
- }
- }