2012-01-12 2 views
0

WPF에서 간단한 GUI를 만들었습니다. 데이터베이스에서 가져온 일부 데이터를 보여 드리고자합니다. 하지만 지금은 GUI와 수신 된 데이터에 대한 간단한 계산을 수행하는 몇 가지 기능 만 있습니다. 내 목표는 "거짓"데이터를 생성하는 모의 객체를 만드는 것이지만, 어떻게 시작해야할지 모르겠습니다. 그 중 하나를 만드는 방법을 말씀해 주시겠습니까? 그렇다면 나머지 부분을 유사하게 만들 수 있습니다. 다음은 계산을 수행하는 클래스입니다.모의 객체 만들기

 public Statistic showUsersPostCount(Options options) 
    { 
     Query q = (Query)this.client.DoQuery(); 
     q.AddAuthor(options.Login); 
     q.SetSinceDate(options.DateFrom); 
     q.SetUntilDate(options.DateTo); 
     q.AddTitleWord(options.Discussion); 
     List<Entity> list = (List<Entity>)q.PerformQuery(); 

     Statistic statistic = new Statistic(); 

     statistic.UsersPostCount = list.Count; 
     return statistic; 
    } 

이 함수는 몇 가지 간단한 통계를 반환합니다. 하지만 클래스 쿼리에 대한 코드가 없습니다. 어떻게이 클래스의 객체를 모의 할 수 있습니까?

답변

0

코드 제공 ... 모의하기 위해 종속성에 대한 대체 객체 (이 경우 .client 객체)를 제공 할 수있는 방법이 필요하지 않습니다.

그렇듯이이 방법은 단 하나의 입력 '옵션'만 갖지만 그 코드에 비해 상대적으로 최소한의 영향을줍니다.

또한 클래스의 예를 보여줄 것이라고 주장하지만 실제로는 아니지만 showUsersPostCount라는 메서드 만 보여줍니다.

0

코드가 모의하려는 클래스 내의 메소드라고 가정하면, 아직 수행하지 않은 경우, 구현할 클래스의 인터페이스를 작성하는 것이 첫 번째 단계입니다.

그런 다음 구체적인 클래스가 아닌 인터페이스를 mocking 프레임 워크에 전달할 수 있습니다. (Moq을 사용했지만 nmock은 매우 유사하다고 가정합니다). 그런 다음 속성/메서드가 조롱 프레임 워크를 통해 반환하도록하려는 모의 데이터를 채울 수 있습니다.

0

다른 사람들이 언급했듯이, 표준 조롱 도구를 사용하면 코드를 조롱 할 수 없습니다. 항상 Moles이 있으며, 이는 당신이 "Unmockable을 조롱"할 수있게 해줍니다. Moles는 당신이 그 방법을 모의하는 것을 허용합니다.

당신이 내부적으로 통제하는 것을 조롱하기 위해 Moles에 의존해야한다면 (데이터베이스와 파일 등의 외부 종속성을 조롱하기 위해 설계된 도구이기 때문에) 설계 유연성을 높이는 것이 좋습니다. testable (Moles가없는 testable) 디자인은 전체적으로 좋은 디자인이 될 가능성이 큽니다.