2011-10-11 2 views
6

void 메소드에 대해 void를 반환하도록 RhinoMock에서 스텁 객체를 적용하려면 어떻게해야합니까? 스텁 객체에서 Void를 반환하는 void 메서드를 어떻게 적용 할 수 있습니까?

이 예제를 보자

public interface ICar 
{ 
    string Model {get;set;} 
    void Horn(); 
} 

ICar stubCar= MockRepository.GenerateStub<ICar>(); 
stubCar.Expect(c=>c.Horn()).Return(//now what so that 
            // it returns nothing as the meth. returns void ? 
+0

void 반환 형식으로 정의 된 경우 어떻게 반환 할 수 있습니까? – CodingGorilla

+0

void를 반환하도록 강제하지 않으면이 스텁에 대한 호출이 예외를 throw합니다. 나는 그것을 보았고, 보았다 : Jon는 옳았다! – pencilCake

답변

8

방법은 값을 반환 할 수 없습니다 - 그것은 무효 방법입니다. CLR은 이 아니며이 값을 반환하려고합니다. 이를 테스트 할 필요가 없습니다.

Expect 전화 만 필요합니다.

6

Return() 메서드는 void 메서드 호출에 대해 유효하지 않습니다. 호출되었는지 여부를 Horn() 당신을 말할 것이다

ICar stubCar= MockRepository.GenerateStrictMock<ICar>(); 
stubCar.Expect(c=>c.Horn()); 
stubCar.DoSomethingThatIsSupposedToCallHorn(); 
stubCar.VerifyAllExpectations(); 

: 오히려 당신이 뭔가를 할 수 있습니다.

단위 테스트를 할 때 void 메소드가 호출되는 방식을 테스트하는 방법입니다. 당신은 다음을 수행합니다

  1. 가 예상 메서드가 호출되었는지 확인 기대
  2. 를 호출 할 필요가 기대 (Expect())
  3. 전화하는 방법을 설정합니다.
+0

모의가 아닌 스텁을 사용하고 있기 때문에 스텁이 항상 VerifyAllExpectations를 통과하기 때문에 이것이 작동하지 않을 것이라고 생각합니다. 참조 : http://www.wrightfully.com/on-rhino-mocks-verifyallexpectations-vs-assertwascalled/ – crabCRUSHERclamCOLLECTOR

+0

그것은 엄격한 모의가되어야합니다. 내가 바꿀거야. 그것을 잡아 주셔서 감사합니다. –

관련 문제