2013-03-14 2 views
2

NS substitute에 문제가 있습니다. 내 (무효) 메소드 ReportingCycleDeliveryRepository.Add() 어떤 ReportingCycleDelivery 인수로 호출 될 때 사용할 인수 옵션을 결정할 수 없습니다.

ReportingCycleDeliveryRepository 
.When(f => f.Add(Arg.Any<ReportingCycleDelivery>())) 
.Do(x => RepCycleDeliveries.Add((ReportingCycleDelivery)x[0])); 

그래서, 내 RepCycleDeliveries 목록에이 항목을 추가해야합니다 : 나는이 짧은 코드가 있습니다.

하지만 그 대신, 그것은 예외가 발생합니다 :

NSubstitute.Exceptions.AmbiguousArgumentsException을

"를 사용하는 인수 스펙을 확인 할 수 없습니다 는 동일한 유형의 모든 인수에 대한 사양을 사용하십시오.."

왜 그럴까요? NS substitute가 사용할 올바른 인수 스펙을 결정할 수없는 이유는 무엇입니까? 인수가 어떤 ReportingCycleDelivery 항목이 될 수 있다는 힌트를 분명히 제공합니다.

+1

Add 메서드가 오버로드 될 수 있습니까? –

+0

hmm 내 ReportingCycleDeliveryRepository.Add() 메서드는 제네릭 형식입니다. void (T 엔터티)을 추가합니다. 여기서 T : class; 그 쪽이 맞는 거 같아요. 해결책이 있습니까? –

+0

아니요, 제네릭이 문제가 아니어야합니다. 내가 의미했던 것은 더 일반적인 매개 변수를 취하는 Add의 과부하가 추가 된 경우였습니다. 그러나 나는 추측하지 않는다 :) –

답변

1

당신은 다음에 코드를 변경 할 수 있어야하고에 당신이 그것을 원하는 방식으로 작업 한 : 당신이 코드를 보지 않고이 오류가 이유

ReportingCycleDeliveryRepository 
    .When(f => f.Add(Arg.Do<ReportingCycleDelivery>(
     x => RepCycleDeliveries.Add(x[0]))); 

그것은 정확히 말하기 어렵다를 ReportingCycleDeliveryRepositoryReportingCycleDelivery.

관련 문제