클래스가있어서 내 인터페이스가 더 있습니다. 그것은 내 인터페이스에서 노출시키지 않은 속성을 가지고 있습니다.스텁 콘크리트 클래스에 있지만 유닛 테스트 용 인터페이스에는없는 속성을 스텁합니다.
public interface IViewResolver
{
object GetViewFor(string viewName);
}
이제 해당 인터페이스를 기반으로하는 MefViewResolver를 구현하고 싶습니다.
public class ViewResolver : IViewResolver
{
[ImportMany]
public IEnumerable<Lazy<IView,IViewMetaData>> Views { get; set; }
public object GetViewFor(string viewName)
{
var view = Views.Where(x => x.Metadata.Name == viewName).FirstOrDefault();
return view == null ? null : view.Value;
}
}
내 SUT는 mefViewResolver로로드 된 생성자 주입 당 IResolver를 가져옵니다. 내 단위 테스트에서 미리 설정하거나 내 인터페이스에서 특정 mef 또는 mef를 사용하지 않고 외부에서 Views 속성을 설정하고 싶습니다. 기본적으로 예상 값으로 뷰를 설정하고 IViewResolver를 사용하는 my viewmodel이 사전 설정 뷰를 반환하는지 확인하려고합니다 ... 내 인터페이스에 뷰 속성이 없더라도 어떻게 스텁 할 수 있습니까?
내가 잘못된 길을 생각하면 ... 어떤 수정이 훨씬 appriciated 것입니다 ..
감사 D.
: RhinoMocks 그것은 뭔가를해야한다 IViewResolver에 의존하는 것으로 간주되는 MyViewModel.DoSometingWithTheView()의 결과입니다. –
좋은 지적, 고마워. –
머리를 주셔서 감사합니다. 한 번에 2 개의 생각을 테스트하려고합니다. 나는 독립적으로 mefviewresolver를 테스트해야하며 내 뷰 모델 테스트에서 작동한다는 점에 의존해야합니다. 그걸로 내 GetViewFor를 걱정하지 않고 스텁 (stub) 할 수 있습니다 ... 다시 한번 감사드립니다 =) – silverfighter