我已经实现了一个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必须有一种方法可以做到这一点,有谁知道如何做到这一点?
答案 0 :(得分:2)
原来我在找错了地方。我找到了答案here。
我需要做的是这样的事情:
var _mock = MockRepository.GenerateMock<ITimer>();
_mock.Raise(x => x.Elapsed += null, this, EventArgs.Empty);