2009-11-01 3 views
2

System.Imiter 인터페이스를 구현했습니다. System.Timers.Timer 클래스를 사용하는 클래스를 테스트하고 싶습니다.메소드를 호출 할 때 이벤트의 기대치를 어떻게 설정합니까?

따라서 Timer.Start()를 호출하면 시퀀스가 ​​실행되므로 나중에 Elapsed 이벤트가 발생할 것으로 예상됩니다.

그러나 테스트를 위해 이벤트가 발생하기 위해 일정 시간 기다리기를 원하지 않기 때문에이 동작을 조롱하고 싶습니다.

나는 Start 메서드를 조롱하고 단순히 이벤트를 발생 시키려고했으나이를 수행하는 방법을 모르겠습니다. 내가 컴파일러가 이벤트 만 + = 또는의 맥락에서 사용될 수 있다는 것을 나에게 말하고있다지고있어 문제

var _mock = MockRepository.GenerateMock<ITimer>(); 
//this is what I'd like to do but it doesn't work 
Expect 
    .Call(_mock.Start()) 
    .WhenCalled(() => 
     { 
      if (_mock.Elapsed != null) 
       _mock.Elapsed(); 
     }); 

- :

이것은 내가 지금까지 무엇을의 종류 = 조작.

Rhino Mocks를 사용하여이를 수행 할 수있는 방법이 있어야합니다.이를 수행하는 방법을 아는 사람이 있습니까?

답변

2

나는 밖으로 틀린 장소를보고 있었다. 나는 대답 here을 찾았다.

var _mock = MockRepository.GenerateMock<ITimer>(); 
_mock.Raise(x => x.Elapsed += null, this, EventArgs.Empty); 
: 내가 할 필요가 무엇

이 라인을 따라 뭔가했다

관련 문제