[英]How do I raise an event in FakeItEasy for an event based on a custom delegate?
我正在测试的应用程序充满了基于自定义委托的事件,例如:
public delegate void NameChangedHandler(string name);
public event NameChanged OnNameChanged;
...
public void ChangeYourName(string newName)
{
if( NameChanged != null )
NameChanged(newName);
}
我想模拟生成这些事件的类,并将这些事件提升到被测试的类中。
我知道FakeItEasy可以使用Raise.With()
来使用Raise.With()
MyHandler(object sender, EventArgs e)
或MyHandler(EventArgs e)
的传统事件签名来引发事件,但我不知道在我的情况下该怎么做。
有任何想法吗?
从FakeItEasy 2.0.0开始 ,现在可以实现。
Raising Events文档主题有完整的故事,但要点是你要使用的
fake.OnNameChanged += Raise.With<NameChanged>(newName);
与往常一样,事件必须是虚拟的。
您始终可以将ChangeYourName
虚拟并替换该方法。
A.CallsTo(()=>fakeClass.ChangeyourName(A<string>._)).Invokes((x)=>invokeMockEvent(x));
如果那不是您想要的,我想如果ChangeYourName
是公开的,您可以创建您的假类
var class = new Class();
class.OnNameChanged += (x)=>
{
Assert.AreEqual(x,"tim");
};
class.ChangeYourName("tim");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.