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