구체적인 SortedDictionary가되도록 구체적인 클래스를 모의하고 싶습니다.C# 모의 콘크리트 클래스. 방법?
상황 :
내가 다음과 같이 정의 LocationMapper 클래스가 : 단위 테스트 AddLocation에
public class LocationMapper
{
private SortedDictionary<string, Location>() locationMap;
public LocationMapper()
{
this.locationMap = new SortedDictionary<string, Location>();
}
public LocationMapper(SortedDictionary<string, Location> locations)
{
this.locationMap = locations;
}
public Location AddLocation(Location location)
{
if(! locationMap.ContainsKey(location.Name))
{
locationMap.Add(location.Name, location)
}
return locationMap[location.Name];
}
}
()를, 나는 SortedDictionary <> 콘크리트 클래스를 모의 할 필요가있다. 불행히도 NS substitute는 그것을 허용하지 않습니다.
The unit test that I had envisioned to write is below
[Test]
public void AddLocation_ShouldNotAddLocationAgainWhenAlreadyPresent()
{
var mockLocationMap = ;//TODO
//Stub mockLocationMap.ContainsKey(Any<String>) to return "true"
locationMapper = new LocationMapper(mockLocationMap);
locationMapper.AddLocation(new Location("a"));
//Verify that mockLocationMap.Add(..) is not called
}
가 어떻게 DOTNET에서이 스타일로 단위 테스트를 작성 가겠어요
? 또는 알려진 제약 조건에 대해이 경로를 사용하지 않습니까?
귀하의 도움에 감사드립니다.
이 왜 조롱 : 예를 들어 내가 Typemock 아이솔레이터를 사용하고 당신이 만들고 싶어 테스트를 만들 수 있었다 함께 해요, 당신이 구체적인 클래스를 조롱 할 수있는 단위 테스트 도구? 왜 인스턴스를 만들고 전달하지 않는가? 당신은 당신이 그 결과를 주장 할 수 있다고 생각할 수 있기를 바라지 만 그것을 채울 수있는 완전한 통제력을 가지고 있습니다. 그것이 인터페이스 였고 확실한 모의지만, 구체적인 사전이 있다면, 나는 그것이 필요하다는 것을 보지 못합니다. – TyCobb
당신은 실제로 무엇을 테스트하고 있습니까? 그것은 나에게 SortedDictionary가 보장하는 것을 수행하는지 실제로 테스트하고있는 것으로 보입니다. 달성하고자하는 가치는 무엇입니까? –
@TyCobb, 필자는 단위 테스트 바이어스/선호도를 사용자의 열독을위한 템플릿 단위 테스트 케이스로 업데이트했습니다. – karthiks