代码之家  ›  专栏  ›  技术社区  ›  Mark Rogers

使用Rhinomock,如何在没有空构造函数的情况下模拟或存根一个具体类?

  •  28
  • Mark Rogers  · 技术社区  · 15 年前

    public class MyClass{
         public MyClass() {}
    }
    

    但如果我添加了一个接受参数的构造函数,并删除了一个不接受参数的构造函数:

    public class MyClass{
         public MyClass(MyOtherClass instance) {}
    }
    

    我倾向于得到一个例外:

    System.MissingMethodException:无法

    我尝试在调用Mock或Stub时输入null,但没有效果。

    3 回复  |  直到 14 年前
        1
  •  32
  •   BartoszKP    9 年前

    是的。只需在您的 StrictMock() 电话:

    // New FruitBasket that can hold 50 fruits.
    MockRepository mocks = new MockRepository();
    FruitBasket basket = mocks.StrictMock<FruitBasket>(50);
    
        2
  •  3
  •   Mark Rogers    14 年前

    如果您在没有空/默认构造函数的情况下模拟一个具体类,那么Rhino Mocks将不得不使用任何其他可用的构造函数。Rhino需要您为任何非空构造函数提供参数,因为它不知道如何构建它们。

    我的错误是我试图将空值传递给 CreateMock GenerateMock 调用,当我为构造函数生成一个非null参数时,创建mock或stub的调用就开始工作。

        3
  •  1
  •   womp    15 年前

    你必须在考试结束后把它们交上来 DynamicMock<T>

    例如:

    var myMock = MockRepository.DynamicMock<MyClassWithVirtuals>(int x, myObj y);