2010-01-21 5 views
1

RhinoMocks 사용 - "일부 함수가 호출 될 때마다 - 어떤 값을 반환해야합니다"라고 어떻게 말할 수 있습니까?RhinoMocks - 나중에 호출되는 함수에 대한 반환 지정

I는 다음과 같이 말하고 싶습니다 - AddNumbers 기능이 1과 2를 호출합니다 - 다음

fakeCalculator.WhenCalled(factory => factory.AddNumbers(1, 2)).Return(3); 

그리고 그것이 3을 반환합니다 즉, 앞서 정의하고 함수를 트리거하고 싶습니다. 그 이유는 다른 클래스에 주입 된 내 모의 객체에 대한이 동작에 의존하기 때문입니다. 다시 AddNumbers 함수를 호출하게됩니다. 이 같은

답변

1

뭔가 : 정확히 같은

MockRepository mocks = new MockRepository(); 
IFactory factory = mocks.DynamicMock<IFactory>(); 

using(mocks.Record()) { 
    factory.AddNumbers(1, 2); 
    LastCall.Return(3); 

    factory.AddNumbers(2, 3); 
    LastCall.Return(5); 
} 

int result = factory.AddNumbers(1, 2); 
Assert.AreEqual(3, result); 

result = factory.AddNumbers(2, 3); 
Assert.AreEqual(5, result); 
+0

. 고마워! 이전에 레코드 기능을 사용하지 않았습니다. – stiank81

+1

@ stiank81 : 아주 멋진 기능입니다. 'LastCall.Throw (someException)'또는'LastCall.Do (someDelegate)'라고 말하면 정말 재미있을 것입니다. – jason

+0

쿨, thx 제이슨! Rhino에서 배우기에 아직도 좋은 물건들! :-) – stiank81

관련 문제