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

时间:2015-03-12 08:44:11

标签: c# unit-testing rhino-mocks

我在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 个答案:

答案 0 :(得分:5)

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

  1. 它在运行时生成动态程序集(使用Castle Dynamic Proxy库来执行此操作)
  2. 在该程序集中,Rhino创建了一个新类型,派生自您想要模拟的类型
  3. 重写该新类型的成员以插入录制/存根逻辑
  4. 实际上,您只能模拟类的virtual / abstract方法和接口的任何成员。

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