gpt4 book ai didi

c# - 使用 Rhino 从模拟对象引发事件

转载 作者:行者123 更新时间:2023-12-03 04:06:50 27 4
gpt4 key购买 nike

我在模拟对象上引发事件时遇到问题。我正在使用Rhino Mocks 3.4。我研究过类似的问题,但未能重现任何建议的解决方案。

我有一个类 - Foo - 它有一个私有(private)方法,只能通过注入(inject)接口(interface) - IBar 的事件调用来访问。

如何从 RhinoMock 对象引发事件 IBar.BarEvent,以便我可以在 Foo 中测试该方法?

这是我的代码:

[TestFixture]
public sealed class TestEventRaisingFromRhinoMocks
{

[Test]
public void Test()
{
MockRepository mockRepository = new MockRepository();
IBar bar = mockRepository.Stub<IBar>();

mockRepository.ReplayAll();

Foo foo = new Foo(bar);

//What to do, if I want invoke bar.BarEvent with value =123??

Assert.That(foo.BarValue, Is.EqualTo(123));

}

}


public class Foo
{
private readonly IBar _bar;
private int _barValue;

public Foo(IBar bar)
{
_bar = bar;
_bar.BarEvent += BarHandling;
}

public int BarValue
{
get { return _barValue; }
}

private void BarHandling(object sender, BarEventArgs args)
{
//Eventhandling here: How do I get here with a Rhino Mock object?
_barValue = args.BarValue;
}
}


public interface IBar
{
event EventHandler<BarEventArgs> BarEvent;
}


public class BarEventArgs:EventArgs
{
public BarEventArgs(int barValue)
{
BarValue = barValue;
}
public int BarValue { get; set; }
}

最佳答案

我认为是这样的:

bar.Raise(x => x.BarEvent += null, this, EventArgs.Empty);

http://ayende.com/wiki/Rhino+Mocks+3.5.ashx#Howtoraiseevents

关于c# - 使用 Rhino 从模拟对象引发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032955/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com