c# - 调用方法时如何设置事件的期望值?

标签 c# mocking rhino-mocks

我已经实现了一个 ITimer 接口(interface),因为我想围绕我正在构建的一个使用 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 来做到这一点,有人知道怎么做吗?

最佳答案

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

我需要做的是这些方面的事情:

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

关于c# - 调用方法时如何设置事件的期望值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1658731/

相关文章:

c# - 从 Core 控制台应用程序连接到 Core MVC 应用程序数据上下文

c# - 查找哪个函数使用某个属性

java - Unity 中的回调监听器 - 如何从 Android 中的 UnityPlayerActivity 调用脚本文件方法

java - 同一类中的模拟方法

php - 在 PHPUnit 中,如何模拟不属于类的函数?

c# - 模拟和 stub Ajax 请求

c# - 我是否只需要在 Mock 对象上显式设置预期的返回值?

c# - 发出代码效果不好

CakePHP Mocking 模型在 Controller 中动态加载

c# - 使用 Rhino 模拟从 Spring.Net 模拟 TransactionTemplate