2010-09-28 71 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