2014-07-09 2 views
1

내 응용 프로그램에서는 대부분의 클래스가 Base 클래스에서 상속됩니다. 또한 데이터 처리를위한 저장소 클래스가 있습니다.유닛 테스트 - 기본 클래스 생성자에 저장소를 전달하는 나쁜 습관

private IMyRepository _rep; 

public MyViewModel() 
    : this(new MyRepository()) 
{ } 

public MyViewModel(IMyRepository rep) 
{ 
    _rep = rep; 
    DoStuff(); 
} 

그러나 어떤 좋은 이유가 - 테스트 가능성 또는 기능의 측면에서 - 내가이에 모든 것을 이동하지 않도록 :

것은 그들을 검증하기 위해, 나는 내 수업에이 일을 했어요 기본 클래스를 누른 다음 파생 클래스에 DoStuff()를 추가하기 전에 상속 된 생성자에서 내 저장소를 가져 오기 위해 실행하십시오. 의 base class로부터 상속 한 모든 클래스는 같은 저장소 형 또는

  • IRepository<ElementType>를 얻을 당신이 MyBaseClase<ELementtype> 같은 genric 매개 변수를 사용하는 경우를 사용하는 경우

  • 답변

    3

    당신은

    • 의 base class의 생성자에 저장소를 넣을 수 있습니다.

    저는 고객 모델이 고객 저장소를 얻고 인보이스 모델이 송장 저장소를 얻도록 일반적으로 다른 모델 클래스에 대해 다른 저장소를 사용합니다.

    baseclass에 저장소가 필요한 일부 기능이있는 경우 저장소를 저장소에 추가합니다.

    +0

    감사합니다. 기본 클래스에는 저장소가 직접 필요하지 않지만 동시성 문제를 피하기 위해 모든 클래스가 동일한 저장소를 사용하는 데 유용한 인스턴스가 응용 프로그램에 있습니다. 모든 클래스는 동일한 저장소 유형을 사용합니다. –

    관련 문제