Я реализовал интерфейс ITimer, потому что хочу написать несколько тестов для создаваемого класса, использующего класс 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, кто-нибудь знает, как это сделать?