如何在调用方法时设置事件的期望?

时间:2009-11-01 23:12:32

标签: c# mocking rhino-mocks

我已经实现了一个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();
        });

我遇到的问题是编译器告诉我该事件只能在+ =或a - =操作的上下文中使用。

使用Rhino Mocks必须有一种方法可以做到这一点,有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

原来我在找错了地方。我找到了答案here

我需要做的是这样的事情:

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