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

pdu*_*can 5 c# mocking fakeiteasy

我正在测试的应用程序充满了基于自定义委托的事件,例如:

public delegate void NameChangedHandler(string name);
public event NameChanged OnNameChanged;
...
public void ChangeYourName(string newName)
{
    if( NameChanged != null )
        NameChanged(newName);
}
Run Code Online (Sandbox Code Playgroud)

我想模拟生成这些事件的类,并将这些事件提升到被测试的类中.

我知道,FakeItEasy可以使用Raise.With()的筹款活动与传统的事件签名 MyHandler(object sender, EventArgs e)MyHandler(EventArgs e),但我不知道在我的情况做.

有任何想法吗?

Bla*_*rad 3

FakeItEasy 2.0.0开始,这是可能的。

Raising Events 文档主题包含完整的故事,但要点是您可以使用

fake.OnNameChanged += Raise.With<NameChanged>(newName);
Run Code Online (Sandbox Code Playgroud)

与往常一样,活动必须是虚拟的。