执行此代码犀牛制品抛出与消息一个InvalidOperationException的第二行。当“这个动作是无效的时,模拟对象处于重放状态”模拟对象何时进入重播状态?
var mockScanner = MockRepository.GenerateMock<PortScanner>(null);
mockScanner.Expect((scanner => { scanner.Scan(null, null); }));
通过代码在调试器步进人们可以看到调试器运行该类中定义的方法,并在控制离开此方法后直接发生异常。
在另一个测试此相似的代码做的工作没有问题
var mockView = MockRepository.GenerateMock<IScanView>(null);
mockView.Expect(view => { view.Close(); });
var controller = new ScanController(mockView);
controller.Exit();
mockView.VerifyAllExpectations();
,我能想到的唯一的区别可能是theese两个测试之间的任何consequense的是,退出是同时扫描界面上的成员是一类虚拟成员
我错过了什么?
更新
进一步研究表明,这是关系到犀牛处理虚拟方法的方式。我正在关注这里的文档mmy研究
然后我的语法得到一个清除器(谢谢:)),不幸的是我的测试仍然抛出 – Crippledsmurf 2009-05-31 15:31:31
对构造函数中的null参数有任何意义。如果你传递一个有效的对象而不是null,会发生什么? – tvanfosson 2009-05-31 15:45:17