|
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.
|