var contextChannel = this.MockRepository.Stub<IContextChannel>();
var context = this.MockRepository.Stub<IOperationContext>();
context.Stub(x => x.Channel).Return(contextChannel);
context.Replay();
Replay 有什么用?
我知道在录制然后回放 Action 的情况下,Replay() 调用是必要的。但是我不明白为什么在我什么都不记录的情况下还要强制我多写一行代码。我只需要一个返回我的对象的属性。
最佳答案
更新:
您没有正确使用 AAA 语法。您不再需要 MockRepository 的实例(这已用于 3.5 之前的 Rhino)。只需调用 MockRepository 上的静态方法:
var contextChannel = MockRepository.GenerateStub<IContextChannel>();
var context = MockRepository.GenerateStub<IOperationContext>();
context.Stub(x => x.Channel).Return(contextChannel);
这里是一些文档:
- Rhino Mocks - Arrange, Act, Assert Syntax通过 Ayende Rahien
- Rhino Mocks 3.5官方文档
原始答案
你不知道。在像您这样的情况下,不再需要调用 Replay
。
在以前的版本中,有一个“记录-重播”范例,您可以在其中记录期望并在测试期间重播它们。它已被 AAA 语法取代,您可以在其中更轻松、更灵活地设置模拟。
在幕后,仍然有模拟的记录和回放状态。 Stub
等方法将 mock 置于记录状态,对其进行配置,然后将它们放回记录状态。在这些情况下,您不需要显式调用 Record
。
如果你想做一些更高级的操作,你可以自己将模拟设置为重播状态,用它做一些事情,例如。为了重新设定期望:
mock.BackToRecord(BackToRecordOptions.All);
mock.Replay();
关于c# - 为什么在使用 Rhino Mocks stub 函数时需要 Replay()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428647/