犀牛嘲笑

本文关键字:犀牛 | 更新日期: 2023-09-27 18:34:19

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

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

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

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

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

我可以在哪里寻找它?它是如何工作的?

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

犀牛嘲笑

Stub 调用设置可选的Expect调用。传递给Stub的函数(在本例中为 x => x.GetUserByName("ayende"))实际上是针对模拟对象(这是一个城堡动态代理对象)执行的。调用被截获并记录在MockRepository中,及其参数作为期望。IMethodOptions<>对象从保存的有关调用的数据生成并返回,随后调用Return(theUserObject)

你可以使用像dotPeek这样的东西来更详细地反汇编和检查Rhino.Mocks.dll相关代码在RhinoMocksExtensions.cs,在Rhino.Mocks命名空间中。

只是想在伟大的克里斯的答案中添加指向 Rhino Mock 源代码的链接