From: <fli...@us...> - 2008-10-08 20:38:59
|
Revision: 180 http://structuremap.svn.sourceforge.net/structuremap/?rev=180&view=rev Author: flimflan Date: 2008-10-08 20:38:53 +0000 (Wed, 08 Oct 2008) Log Message: ----------- PartialMockTheClassUnderTest now puts the class under test in replay mode when using MockMode.AAA Modified Paths: -------------- trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs Modified: trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs 2008-10-08 20:12:24 UTC (rev 179) +++ trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs 2008-10-08 20:38:53 UTC (rev 180) @@ -23,25 +23,26 @@ private readonly AutoMockedContainer _container; private TARGETCLASS _classUnderTest; private readonly RhinoMocksServiceLocator _serviceLocator; + private readonly Func<object, object> _mockDecorator; public RhinoAutoMocker() : this(MockMode.RecordAndReplay) {} public RhinoAutoMocker(MockMode mockMode) { - var mockCreationStrategy = getMockCreationStrategy(mockMode); - _serviceLocator = new RhinoMocksServiceLocator(this, mockCreationStrategy); + _mockDecorator = getMockDecorator(mockMode); + _serviceLocator = new RhinoMocksServiceLocator(this, _mockDecorator); _container = new AutoMockedContainer(_serviceLocator); } - private static Func<MockRepository, Type, object> getMockCreationStrategy(MockMode mockMode) + private static Func<object, object> getMockDecorator(MockMode mockMode) { switch (mockMode) { case MockMode.RecordAndReplay: - return MockCreationStrategy.RecordMode; + return MockDecorator.Nullo; case MockMode.AAA: - return MockCreationStrategy.ReplayMode; + return MockDecorator.PutInReplayMode; default: throw new InvalidOperationException("Unsupported MockMode " + mockMode); } @@ -88,7 +89,7 @@ /// </summary> public void PartialMockTheClassUnderTest() { - _classUnderTest = PartialMock<TARGETCLASS>(getConstructorArgs()); + _classUnderTest = (TARGETCLASS)_mockDecorator(PartialMock<TARGETCLASS>(getConstructorArgs())); } private object[] getConstructorArgs() Modified: trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs 2008-10-08 20:12:24 UTC (rev 179) +++ trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs 2008-10-08 20:38:53 UTC (rev 180) @@ -6,15 +6,15 @@ public class RhinoMocksServiceLocator : ServiceLocator { private readonly MockRepository _mocks; - private readonly Func<MockRepository, Type, object> mockCreationStrategy; + private readonly Func<object, object> _mockDecorator; - public RhinoMocksServiceLocator(MockRepository mocks, Func<MockRepository, Type, object> mockCreationStrategy) + public RhinoMocksServiceLocator(MockRepository mocks, Func<object, object> mockDecorator) { _mocks = mocks; - this.mockCreationStrategy = mockCreationStrategy; + _mockDecorator = mockDecorator; } - public RhinoMocksServiceLocator(MockRepository mocks) : this(mocks, MockCreationStrategy.RecordMode) + public RhinoMocksServiceLocator(MockRepository mocks) : this(mocks, MockDecorator.Nullo) { } @@ -26,28 +26,27 @@ public T Service<T>() { - return (T)mockCreationStrategy(_mocks, typeof (T)); + return (T) Service(typeof (T)); } public object Service(Type serviceType) { - return mockCreationStrategy(_mocks, serviceType); + return _mockDecorator(_mocks.DynamicMock(serviceType)); } #endregion } - public static class MockCreationStrategy + public static class MockDecorator { - public static object RecordMode(MockRepository repository, Type type) + public static object Nullo(object mock) { - return repository.DynamicMock(type); + return mock; } - public static object ReplayMode(MockRepository repository, Type type) + public static object PutInReplayMode(object mock) { - var mock = repository.DynamicMock(type); - repository.Replay(mock); + mock.Replay(); return mock; } } Modified: trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs 2008-10-08 20:12:24 UTC (rev 179) +++ trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs 2008-10-08 20:38:53 UTC (rev 180) @@ -405,5 +405,15 @@ autoMocker.IsInReplayMode(autoMocker.Get<IMockedService>()).ShouldBeTrue(); } + + [Test] + public void PartialMockClassUnderTestPutsTheClassUnderTestInReplayModeWhenUsingAAA() + { + var autoMocker = new RhinoAutoMocker<ConcreteClass>(MockMode.AAA); + autoMocker.PartialMockTheClassUnderTest(); + + autoMocker.IsInReplayMode(autoMocker.ClassUnderTest).ShouldBeTrue(); + } + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |