代码之家  ›  专栏  ›  技术社区  ›  Udontknow

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

  •  4
  • Udontknow  · 技术社区  · 10 年前

    我在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());
      }
    
    1 回复  |  直到 10 年前
        1
  •  5
  •   k.m    10 年前

    你不能模仿 不可重写 。创建模拟实例时,Rhino执行以下操作:

    1. 它在运行时生成动态程序集(使用 Castle Dynamic Proxy 图书馆可以做到这一点)
    2. 在该程序集中,Rhino创建了一个新类型,该类型派生自您要模拟的类型
    3. 重写该新类型的成员以插入记录/存根逻辑

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

    请记住,这种限制在所有自由模仿框架中都存在。