2012-07-30 3 views
0

Moq을 사용하여 설치 및 단위 테스트에 대해 좀 더 자세히 이해하고 있습니다. 나는 사소한 문제가 생겼다. 나는 내 전화 이런 식으로 할 때MOV의 오버로드 된 반환 값

view.Setup(x => x.GetReference("object1")).Returns(object1); 
view.Setup(x => x.GetReference("object2")).Returns(null); 

그러나, 나는 널 문에 반응 할 코드 블록에 충돌하지 : 내가 원하는 무엇

이 같은 것입니다. 특정 설정으로 호출 할 때 특정 방식으로 작동하도록 설치 프로그램을 설정하려면 어떻게해야합니까?

  1. instance: Returns(instance);
  2. delegate(Func<T>): Returns(()=>new Foo());

내가 문제가 사용되는 방법을 반환에 대한 모호함에서 발생하고 있다고 생각 :

+1

당신은 아마해야합니다 테스트 설정에 대해 더 많은 코드를 제공하여 사용자가 시도하고있는 것에 대한 아이디어를 제공하십시오. 모의 객체는 view.GetReference ("object2")를 호출하여 예상되는 null 반환 값을 얻지 못하면 모의 객체가 "object2"매개 변수로 호출되지 않습니다. GetReference 호출을 트리거하는 전체 단위 테스트 및 가능한 테스트중인 코드를 게시 할 수 있습니까? –

답변

0

MOQ는 값을 반환하는 방법은 두 가지 오버로드.

그래서, 당신은 다음과 같은 방법으로 코드의 두 번째 설정에 NULL의 명시적인 형태로 전달해야

  1. view.Setup(x => x.GetReference("object2")).Returns((ExplicitType)null);
  2. view.Setup(x => x.GetReference("object2")).Returns(() => null);