2009-10-26 2 views

답변

4

표준 답변은 클래스를 다시 디자인하여 종속성을 조롱 할 수 있도록하는 것입니다. 이것은 일반적으로 데이터 소스를 클래스로 삽입하여 수행됩니다.

당신은 항상 당신이 더 많은 유연성을 가지고 데이터 소스 인터페이스를 주입하면이

에 대한 DB를 호출 할 필요가 있도록로드가하는 SqlCommand에 의존

class John 
{ 
    public John() { } 
    public void Load() 
    { 
      // call to db in here e.g SQLCommand 
    }     
} 

이하와 같은 역할을하는 클래스를 가질 수

예 이제 당신이 할 수없는 경우

class John 
{ IDataSource _db; 
    public John(IDataSource db) 
    { 
     _db = db; 
    } 
    public void Load() 
    { 
     _db.Load("John"); // IDataSource can now be either SQL 
     //or hardcoded or what ever much easier to test 
    }     
} 

/당신은 통합 테스트 등이 테스트를 치료해야하지 않습니다. 당신은 그것에 대한 데이터를 설정 하는게 어떻습니까? 예 : 읽을 행을 삽입하십시오. 그런 다음 데이터를 원래 상태로 되돌립니다. 아래쪽은 테스트가 느리고 부서지기 쉽다는 것입니다.

관련 문제