2009-11-03 4 views
2

이 내 문제의 테스트입니다. 이 후 나는 실제 점수가 어설 션에서 증가되었는지 확인하기 위해 비 조롱 된 버전이 필요합니다.MOQ는 유효한 MOQ를 가지고하는 것은 한 번만

설정 한 횟수만큼 확인할 수 있음을 안다. Times.Once()하지만 설정에서이 기능을 사용하려면 어떻게해야합니까?

아이디어가 있으십니까? 나를 미치게 만들었다.

건배.

답변

6

당신은의 속성의 반환 값을 테스트하는 것 같다 모의 객체. 실제로 아무것도 증명하지 않습니다. 대신 PointState 객체의 Enter 메서드를 호출 할 때 PointState 객체가 IEntity로 예상 호출을 수행하는지 테스트해야합니다 (아마도 Score 속성을 설정하겠습니까?).

그것이 점수 속성을 설정 가정하면, 당신은 그것을이다

entity.VerifySet(x => x.Score = 15); 
+1

같은 일을 할 것입니다. 나는 이런 식으로 그것을 생각할 생각을하지 않았고 내 마음을 주장을 사용하도록 설정했다. 감사합니다. – Finglas

1

Returns으로 속성을 구성하는 대신 Callback으로 구성하고 처음 0이 반환되는 코드를 사용하고 두 번째 시간부터 실제 개체를 호출합니다. 나는 SetupGet로 콜백을 사용한 적이 있지만, (코드는이 아이디어를 설명하기 그냥, 테스트하지) 이런 식으로 뭔가를해야한다 :

bool alreadyObtainedValue=false; 

playerOneFake.SetupGet(p => p.Score).Callback(() => { 
    if(alreadyObtainedValue) { 
    return realObject.Score; 
    } else { 
    alreadyObtainedValue=true; 
    return 0; 
    } 
});