2010-09-28 63 views
0

我試圖嘲弄象下面的接口的事件:嘲諷接口事件錯誤

[TestMethod] 
public void NeedingDataFiresEvents() 
{ 
    //Arrange 
    var service = MockRepository.GenerateMock<IService>(); 
    service.Expect(i => i.GetValue()).Return(5); 
    var view = MockRepository.GenerateMock<ILogView>(); 
    view.NeedData += null; 
    LastCall.IgnoreArguments(); 
    var evt = LastCall.GetEventRaiser(); 

    var presenter = new LogPresenter(view, service); 
    var args = new DataEventArgs(); 

    //Act 
    evt.Raise(view, args); 

    //Assert 
    Assert.AreEqual(1, args.Results.Count()); 
} 

我得到的錯誤是: System.InvalidOperationException:無效的調用,最後調用已使用或沒有調用(確保您調用虛擬(C#)/ Overridable(VB)方法)。

我不知道爲什麼...我做錯了什麼?如果我沒有真正實例化視圖,我會怎樣應用虛擬...在演示者中有什麼東西?

回答

0

OK,理解了它,這是答案,使用MockRepository實例(an example, sample below taken from there):

var fooDatabaseMock = new MockRepository(); 
var fooDatabase = fooDatabaseMock.DynamicMock<IFooDatabase>(); 
fooDatabase.FooDatabaseInsertEvent += null; 

LastCall.IgnoreArguments(); 

var fooEventRaiser = LastCall.GetEventRaiser(); 
+0

所以你完全改變基於給定的鏈接。爲什麼我問的是要了解修復的大小 – Antoops 2017-03-06 06:14:36

+0

而不是MockRepository.GenerateMock,我只是實例化了MockRepository類,並使用了DynamicMock(我相信,它是前一陣子)。所以不要太難 – 2017-03-06 17:40:15

+0

謝謝!對我來說,這是另一個問題,例如我試圖嘲笑一個類而不是一個接口。 :( – Antoops 2017-03-07 06:21:40