Cri*_*urf 9 rhino-mocks c#-3.0
执行此代码的第二行时,Rhino Mocks会抛出一个InvalidOperationException,并显示消息"当模拟对象处于重放状态时此操作无效"
var mockScanner = MockRepository.GenerateMock<PortScanner>(null);
mockScanner.Expect((scanner => { scanner.Scan(null, null); }));
Run Code Online (Sandbox Code Playgroud)
单步执行调试器中的代码可以看到调试器运行类中定义的方法,并且在控制离开此方法后直接发生异常.
另一个测试中的类似代码确实可以正常工作
var mockView = MockRepository.GenerateMock<IScanView>(null);
mockView.Expect(view => { view.Close(); });
var controller = new ScanController(mockView);
controller.Exit();
mockView.VerifyAllExpectations();
Run Code Online (Sandbox Code Playgroud)
我可以想到的唯一区别可能是两个测试之间的任何后果是,Exit是接口上的成员,而Scan是类中的虚拟成员
我错过了什么?
更新
进一步的探索表明,这与Rhino处理虚拟方法的方式有关.我现在正专注于对文档的研究
Cri*_*urf 12
引起异常的原因是因为Rhino Mocks没有对类型进行必要级别的访问以便正确地进行模拟.使用InternalsVisibleTo授予对Rhino Mocks程序集的内部访问权限解决了这个问题.
值得注意的是,这不会影响接口.我认为这是因为模拟框架需要覆盖接口上没有的类的实现.
归档时间: |
|
查看次数: |
4258 次 |
最近记录: |