我如何可以使用的记录/播放法与StructureMap AutoMocker?
-
19-08-2019 - |
题
是否有可能使用的语法
using(_mocks.Record())
{
//...
}
using(_mocks.Playback())
{
//...
}
与StructureMap RhinoAutoMocker?
在杰里米*米勒斯原来的职位 AutoMocker在StructureMap2.5 这似乎是可能的,因为RhinoAutoMocker继承MockRepository,但是在版2.5.2的StructureMap这似乎是实现在一个稍微不同的方式。
解决方案
我终于解决了这个使用写入AutoMocker和的ServiceLocator定制。
public class RecordPlaybackRhinoAutoMocker<TARGETCLASS> : AutoMocker<TARGETCLASS> where TARGETCLASS : class
{
private RecordPlaybackMocksServiceLocator MockRepository
{
get
{
return _serviceLocator as RecordPlaybackMocksServiceLocator;
}
}
public RecordPlaybackRhinoAutoMocker()
{
_serviceLocator = new RecordPlaybackMocksServiceLocator();
_container = new AutoMockedContainer(_serviceLocator);
}
public IDisposable Record()
{
return MockRepository.Record();
}
public IDisposable Playback()
{
return MockRepository.Playback();
}
}
public class RecordPlaybackMocksServiceLocator : StructureMap.AutoMocking.ServiceLocator
{
private readonly MockRepository _mocks;
public RecordPlaybackMocksServiceLocator()
{
_mocks = new MockRepository();
}
public T PartialMock<T>(params object[] args) where T : class
{
return _mocks.PartialMock<T>(args);
}
public object Service(Type serviceType)
{
return _mocks.StrictMock(serviceType);
}
public T Service<T>() where T : class
{
return _mocks.StrictMock<T>();
}
public IDisposable Record()
{
return _mocks.Record();
}
public IDisposable Playback()
{
return _mocks.Playback();
}
}
我仍然不知道是否有一个内置的方式做到这一点。但这个工程并从rewritting 1200个测试节省了我。
不隶属于 StackOverflow