2012-08-03 2 views
0

테스트에 대한 질문이 있습니다.부분 모의 또는 새로운 수업 또는 그 밖의 무엇?

나는 예외를 반환하는 클래스가 있습니다. 내가 테스트를 만들었습니다

public interface IAnomalyService 
{ 
    IList<Anomaly> GetAllAnomalies(object parameter1, object parameter2); 
    IList<Anomaly> GetAnomalies_OfTypeA(object parameter1); 
    IList<Anomaly> GetAnomalies_OfTypeB(object parameter2); 
} 
public class AnomalyService : IAnomalyService 
{ 
    public IList<Anomaly> GetAllAnomalies(object parameter1, object parameter2) 
    { 
     var lstAll = new List<Anomaly>(); 
     lstAll.AddRange(GetAnomalies_OfTypeA(parameter1)); 
     lstAll.AddRange(GetAnomalies_OfTypeB(parameter2)); 
     return lstAll; 
    } 
    public IList<Anomaly> GetAnomalies_OfTypeA(object parameter1) 
    { 
     //some elaborations 
     return new List<Anomaly> { new Anomaly { Id = 1 } }; 
    } 
    public IList<Anomaly> GetAnomalies_OfTypeB(object parameter2) 
    { 
     //some elaborations 
     return new List<Anomaly> { new Anomaly { Id = 2 } }; 
    } 
} 

class Anomaly 
{ 
    public int Id { get; set; } 
} 

:이 클래스에서 나는 단순히이 예제 코드는 이상과 (두 가지 유형의) 모든 예외를 반환 한

의 두 가지 유형을 반환하는 두 가지 방법이 유형 A와 유형 B (GetAnomalies_OfTypeA 및 GetAnomalies_OfTypeB)의 예외를 검색하는 두 가지 메소드의 경우. 이제 GetAllAnomalies 함수를 테스트하고 싶지만 내가 무엇을해야하는지 잘 모르겠습니다. 1), 가상 같은 클래스 AnomalyService에 GetAnomalies_OfTypeA 및 GetAnomalies_OfTypeB를 선언 클래스 AnomalyService의 모의을, 나는 사실로 CallBase을 설정하고이 방법 GetAnomalies_OfTypeA을 조롱 할 수 MOQ를 사용하여 :

나는 그것을 테스트하기 위해 나는 방법을 생각 및 GetAnomalies_OfTypeB.

2) GetAllAnomalies 메서드를 AllAnomalyService (IAllAnomalyService 인터페이스 사용)라는 다른 클래스로 이동하고 해당 생성자에서 IAnomalyService 인터페이스를 전달하고 GetAllAnomalies가 IAnomalyService 인터페이스를 조롱하는지 테스트 한 후 테스트합니다.

단위 테스트가 새로 도입 되었기 때문에 광산 중 하나 인 경우 또는 다른 해결 방법이있는 경우 어떤 솔루션이 더 좋은지 잘 모릅니다. 도와 주시겠습니까?

클래스가 테스트에 저항 할 때 루카

답변

0

비웃음 좋은 도구입니다 감사합니다. 근원이있는 경우, 조롱은 종종 필요하지 않습니다. 이 방법을 시도해보십시오 다양한으로 AnomalyService의를 반환 할 수 있습니다 공장, 정의 이상을 만들기

  • 를 세 이후
  • (만 B를 입력 만 입력, 모두, 아무도, 단지 C, ...를 입력하지 않음) 유형이 어떤 식 으로든 연결되어 있다면 각 테스트에서 세 가지를 모두 확인해야합니다. A 유형의 예외 만 예상되는 경우 및 GetAnomalies_OfTypeB이 빈 목록을 반환하는 것과 동일한 결과를 GetAllAnomalies이 반환하는지 확인해야합니다.
+0

미안하지만 공장을 만드는 것이 무슨 뜻인지 이해하지 못했습니다. GetAnomalies_OfTypeA 및 GetAnomalies_OfTypeB에 대한 단위 테스트를 이미 만들었으므로 GetAllAnomalies를 테스트 할 때 더 이상 테스트하지 않으려합니다. 내가 테스트하고 싶은 것은 GetAnomalies_OfTypeA와 GetAnomalies_OfTypeB를 호출하는 것을 잊지 않고 "getallanomalies"메소드 안에있는 것입니다. 제 의도는 무언가를 모방하여 GetAnomaliesOfTypeA가 3 개의 예외를 반환하고, oftypeb가 4 개의 예외를 반환하고 getallanomalies를 호출 할 때 7 개의 예외를 반환하는지 확인해야합니다. –

+0

첫 번째 단위 테스트를 위해 AnomalyService를 설정 한 코드를 a 공장. 이상적으로 팩토리는 다음과 같이 작동해야합니다. "A 유형 1과 B 유형 3를 추가하고 서비스를 반환하십시오."그러면 모든 유형의 예외를 여러 개 생성하고 서비스가 올바르게 작동하는지 테스트 할 수 있습니다. 목표 : 테스트의 설정 코드는 1 줄이어야합니다. –

+0

노력해 주셔서 감사합니다. 그러나 나는 아직도 당신이 의미하는 것을 이해하지 못합니다 ... –

관련 문제