簡體   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