Как установить ожидание события при вызове метода?

2

Я реализовал интерфейс 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, кто-нибудь знает, как это сделать?

Теги:
mocking
rhino-mocks

1 ответ

2
Лучший ответ

Оказывается, я искал не то место. Я нашел ответ здесь.

Мне нужно было что-то в этом роде:

var _mock = MockRepository.GenerateMock<ITimer>();
_mock.Raise(x => x.Elapsed += null, this, EventArgs.Empty);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню