2

我想知道 Rhino-Mocks 如何找出我想要存根的方法。下面的示例存根该方法GetUserByName

var stubUserRepository = MockRepository.GenerateStub<IUserRepository>();
stubUserRepository.Stub(x => x.GetUserByName("ayende")).Return(theUserObject);

在下面的示例中,我只是将委托转发给框架。

我认为它正在使用方法签名。我对吗?

是否使用反射?如果是,如何?

我在哪里可以找到它?这个怎么运作?

我正在使用 C# 和那一刻。我想知道背后的概念和 C# 应用的东西。

4

2 回答 2

2

Stub呼叫建立一个可选Expect呼叫。传递给Stub( x => x.GetUserByName("ayende"),在这种情况下) 的函数实际上是针对模拟对象(它是Castle DynamicProxy对象)执行的。MockRepository作为预期,调用被截获并记录在及其参数中。IMethodOptions<>从保存的有关调用的数据中生成一个对象并返回,Return(theUserObject)随后调用该对象。

您可以使用dotPeek 之类的工具来更详细地反汇编和检查 Rhino.Mocks.dll;相关代码在RhinoMocksExtensions.cs,Rhino.Mocks命名空间中。

于 2013-10-08T13:20:00.313 回答
1

只想在伟大的 Chris 的回答中添加Rhino Mock 源代码的链接

于 2013-10-09T19:12:42.620 回答