代码之家  ›  专栏  ›  技术社区  ›  Brian Mains

模拟接口事件错误

  •  0
  • Brian Mains  · 技术社区  · 14 年前

    我试图模拟接口的事件,如下所示:

    [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)方法)。

    我不知道为什么。。。我做错什么了?如果我没有实际实例化视图,我会应用什么虚拟的呢。。。演示者中有什么?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Brian Mains    8 年前

    好吧,我明白了,这就是答案,使用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();