테스트에 대한 질문이 있습니다.부분 모의 또는 새로운 수업 또는 그 밖의 무엇?
나는 예외를 반환하는 클래스가 있습니다. 내가 테스트를 만들었습니다
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 인터페이스를 조롱하는지 테스트 한 후 테스트합니다.
단위 테스트가 새로 도입 되었기 때문에 광산 중 하나 인 경우 또는 다른 해결 방법이있는 경우 어떤 솔루션이 더 좋은지 잘 모릅니다. 도와 주시겠습니까?
클래스가 테스트에 저항 할 때 루카
미안하지만 공장을 만드는 것이 무슨 뜻인지 이해하지 못했습니다. GetAnomalies_OfTypeA 및 GetAnomalies_OfTypeB에 대한 단위 테스트를 이미 만들었으므로 GetAllAnomalies를 테스트 할 때 더 이상 테스트하지 않으려합니다. 내가 테스트하고 싶은 것은 GetAnomalies_OfTypeA와 GetAnomalies_OfTypeB를 호출하는 것을 잊지 않고 "getallanomalies"메소드 안에있는 것입니다. 제 의도는 무언가를 모방하여 GetAnomaliesOfTypeA가 3 개의 예외를 반환하고, oftypeb가 4 개의 예외를 반환하고 getallanomalies를 호출 할 때 7 개의 예외를 반환하는지 확인해야합니다. –
첫 번째 단위 테스트를 위해 AnomalyService를 설정 한 코드를 a 공장. 이상적으로 팩토리는 다음과 같이 작동해야합니다. "A 유형 1과 B 유형 3를 추가하고 서비스를 반환하십시오."그러면 모든 유형의 예외를 여러 개 생성하고 서비스가 올바르게 작동하는지 테스트 할 수 있습니다. 목표 : 테스트의 설정 코드는 1 줄이어야합니다. –
노력해 주셔서 감사합니다. 그러나 나는 아직도 당신이 의미하는 것을 이해하지 못합니다 ... –