PageRenderTime 37ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/Source/Machine.Specifications.Tests/Machine.Testing/AutoMocking/MockingDependencyResolver.cs

https://github.com/machine/machine.specifications
C# | 53 lines | 46 code | 7 blank | 0 comment | 2 complexity | edc25c9f2057f3bf70a9fdbaefbcd908 MD5 | raw file
Possible License(s): MIT, CC-BY-SA-3.0
  1. using System;
  2. using System.Collections.Generic;
  3. using Machine.Container.Model;
  4. using Machine.Container.Services;
  5. using Rhino.Mocks;
  6. namespace Machine.Testing.AutoMocking
  7. {
  8. [ObsoleteEx(Message = "Use FluentAssertions or Mocking library of choice directly", RemoveInVersion = "0.9", TreatAsErrorFromVersion = "0.8")]
  9. public class MockingDependencyResolver : IActivatorResolver
  10. {
  11. #region Member Data
  12. readonly MockRepository _mocks;
  13. readonly Dictionary<Type, object> _objects = new Dictionary<Type, object>();
  14. #endregion
  15. #region MockingDependencyResolver()
  16. public MockingDependencyResolver(MockRepository mocks)
  17. {
  18. _mocks = mocks;
  19. }
  20. #endregion
  21. #region IActivatorResolver Members
  22. public IActivator ResolveActivator(IResolutionServices services, ServiceEntry entry)
  23. {
  24. if (entry.ServiceType.IsInterface)
  25. {
  26. return services.ActivatorFactory.CreateStaticActivator(entry, Get(entry.ServiceType));
  27. }
  28. return null;
  29. }
  30. #endregion
  31. #region Methods
  32. public TService Get<TService>()
  33. {
  34. return (TService)Get(typeof(TService));
  35. }
  36. public object Get(Type serviceType)
  37. {
  38. if (!_objects.ContainsKey(serviceType))
  39. {
  40. _objects[serviceType] = _mocks.DynamicMock(serviceType);
  41. }
  42. return _objects[serviceType];
  43. }
  44. #endregion
  45. }
  46. }