Rhino Mock Expect() 方法触发对预期函数的调用

Rhino Mock Expect() method triggers call on expected function

我在 C# 中使用 Rhino Mocks 3.6,我在模拟对象而不是接口时遇到问题。 有人可以解释为什么在定义期望时实际上会调用方法吗?

   public class MockingBird
   {
      public void TestMethod()
      {
         throw new Exception("Method call!");
      }
   }

...

 [TestMethod]
  public void TestMock()
  {
     var mockedMockingBird = MockRepository.GenerateStrictMock<MockingBird>();
     mockedMockingBird.Expect(x => x.TestMethod());
  }

您不能模拟不可覆盖的方法。在创建模拟实例 Rhino 时执行以下操作:

  1. 它在运行时生成动态程序集(使用 Castle Dynamic Proxy 库来实现)
  2. 在该程序集中,Rhino 创建了一个新类型,派生自您要模拟的类型
  3. 该新类型的成员被覆盖以插入 recording/stubbing 逻辑

实际上,您只能模拟 类 的 virtual/abstract 方法和接口的任何成员。

请记住,此限制存在于所有免费模拟框架中。