[英]How Rhino-Mocks mocks?
我想知道Rhino-Mocks如何找出我想存根的方法。 下面的示例对方法GetUserByName
存根GetUserByName
:
var stubUserRepository = MockRepository.GenerateStub<IUserRepository>();
stubUserRepository.Stub(x => x.GetUserByName("ayende")).Return(theUserObject);
在下面的示例中,我只是将委托转发给框架。
我认为它正在使用方法签名。 我对吗?
使用反射吗? 如果是,怎么办?
我在哪里可以找到它? 这个怎么运作?
我现在正在使用C#。 我想知道背后的概念和C#应用的内容。
Stub
调用设置了可选的Expect
调用。 传递给Stub
的函数(在本例中为x => x.GetUserByName("ayende")
)实际上是针对模拟对象(它是Castle DynamicProxy对象)执行的。 调用被拦截并记录在MockRepository
,并带有其参数,这是期望值。 从有关调用的已保存数据中生成一个IMethodOptions<>
对象,然后将其Return(theUserObject)
然后调用Return(theUserObject)
。
您可以使用诸如dotPeek之类的工具来更详细地分解和检查Rhino.Mocks.dll。 相关代码位于Rhino.Mocks
命名空间的RhinoMocksExtensions.cs
中。
只是想在Chris的回答中添加到Rhino Mock源代码的链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.