unit-testing - Rhino 模拟,MbUnit : Best way to check if object has raised an event

标签 unit-testing rhino-mocks mbunit

我有一个正在测试的对象会引发事件。使用 Rhino Mocks 检查它是否被提出的最佳方法是什么?

我能想到的最好的(我确信它会比这更好):

public void MyCallback(object sender, EventArgs e) { _flag = true;}

[Test]
public void DoSomethingRaisesEvent() {
  _flag = false;
  using(_mocks.Record()) {
    Expect.Call(delegeate { _obj.DoSomething();});
  }
  using(_mocks.Playback()) {
    _obj = new SomethingDoer();
    _obj.SomethingWasDoneEvent += new EventHandler(MyHandler);
    Assert.IsTrue(_flag);
  }
}

最佳答案

我找到了 this article by Phil Haack on how to test events using anonymous delegates

这是代码,直接从他的博客中撕下来,供懒得点击的人使用:

[Test]
public void SettingValueRaisesEvent()
{
    bool eventRaised = false;
    Parameter param = new Parameter("num", "int", "1");
    param.ValueChanged += 
        delegate(object sender, ValueChangedEventArgs e)
        {
            Assert.AreEqual("42", e.NewValue);
            Assert.AreEqual("1", e.OldValue);
            Assert.AreEqual("num", e.ParameterName);
            eventRaised = true;
        };
    param.Value = "42"; //should fire event.

    Assert.IsTrue(eventRaised, "Event was not raised");
}

关于unit-testing - Rhino 模拟,MbUnit : Best way to check if object has raised an event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/149008/

相关文章:

调试构建类型的 Android 单元测试失败

unit-testing - 自动化性能测试

ruby - 为什么 Cucumber 被认为是集成测试工具而不是单元测试工具?

c# - RhinoMocks 在泛型方法中抛出 InvalidOperationException

c# - 验证对象在 Rhino Mocks 中调用自身

teamcity - 我需要包含哪些来自 Gallio 的 dll 才能让 TeamCity 运行测试

c# - Moq - 模拟工厂不会在每次迭代时生成新对象

c# - 创建新对象的单元测试 void 方法

visual-studio - Gallio TestRunner插件,用于Visual Studio 2008和2010,用于MBUnit测试

c# - 如何模拟一个方法?