繁体   English   中英

如何根据自定义代表在FakeItEasy中举办活动?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM