StructureMap Automocker와 함께 레코드/재생 구문을 어떻게 사용할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/473454

문제

구문을 사용할 수 있습니까?

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

structuremap rhinoautomocker와 함께?

Jeremy Millers Original Post에서 StructureMap 2.5의 오토oker RhinoAutomocker가 Mockrepository를 상속 받기 때문에 가능해 보이지만 StructureMap의 버전 2.5.2에서는 약간 다른 방식으로 구현되는 것으로 보입니다.

도움이 되었습니까?

해결책

나는 마침내 맞춤형짜리 오토크와 서비스를 사용하여 이것을 해결했습니다.

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 개의 테스트를 다시 작성하지 못하게합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top