C# 模拟接口事件错误
我试图模拟接口的事件,如下所示:C# 模拟接口事件错误,c#,.net,unit-testing,mocking,rhino-mocks,C#,.net,Unit Testing,Mocking,Rhino Mocks,我试图模拟接口的事件,如下所示: [TestMethod] public void NeedingDataFiresEvents() { //Arrange var service = MockRepository.GenerateMock<IService>(); service.Expect(i => i.GetValue()).Return(5); var view = MockRepository.GenerateMock<ILog
[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());
}
[TestMethod]
public void NeedingDataFiresEvents()
{
//安排
var service=MockRepository.GenerateMock();
Expect(i=>i.GetValue()).Return(5);
var view=MockRepository.GenerateMock();
view.NeedData+=null;
LastCall.IgnoreArguments();
var evt=LastCall.GetEventRaiser();
var presenter=新的LogPresenter(视图、服务);
var args=new DataEventArgs();
//表演
evt.Raise(视图,参数);
//断言
aresequal(1,args.Results.Count());
}
我得到的错误是:
System.InvalidOperationException:调用无效,已使用最后一个调用或未进行任何调用(请确保调用的是虚拟(C#)/Overridable(VB)方法)
我不知道为什么。。。我做错了什么?如果我没有实际实例化视图,我会应用什么虚拟的呢。。。演示者中的某些内容?好的,找到了答案,使用MockRepository实例():
var fooDatabaseMock=newmockrepository();
var fooDatabase=fooDatabaseMock.DynamicMock();
fooDatabase.FooDatabaseInsertEvent+=null;
LastCall.IgnoreArguments();
var fooEventRaiser=LastCall.GetEventRaiser();
因此,您已根据给定的链接进行了完全更改。我问的原因是为了理解FixRepository的大小,而不是MockRepository.GenerateMock,我只是实例化了MockRepository类,并使用了DynamicMock(我相信,这是很久以前的事了)。所以不要太辛苦,谢谢!。对我来说,这是另一个问题,就像我试图模拟一个类而不是一个接口一样(
var fooDatabaseMock = new MockRepository();
var fooDatabase = fooDatabaseMock.DynamicMock<IFooDatabase>();
fooDatabase.FooDatabaseInsertEvent += null;
LastCall.IgnoreArguments();
var fooEventRaiser = LastCall.GetEventRaiser();