English 中文(简体)
如何在StructureMap AutoMocker中使用Record/Playback语法?
原标题:
  • 时间:2009-01-23 16:05:09
  •  标签:

这个句子不完整,无法翻译,需要提供完整的上下文。

using(_mocks.Record())
{
   //...
}
using(_mocks.Playback())
{
   //...
}

使用StructureMap RhinoAutoMocker?

在Jeremy Miller的原始帖子Automocker在StructureMap 2.5中 中,由于RhinoAutoMocker继承MockRepository,因此这似乎是可能的,但在StructureMap的2.5.2版中,实现方式似乎略有不同。

最佳回答

我最终使用自定义编写的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();
    }
}

我仍然不知道是否有内置的方法来完成这个。但这个方法可行,并且让我避免了重写1200个测试。

问题回答

暂无回答




相关问题
热门标签