我正在编写执行逻辑的单元测试,如下所示:

SomeObject obj1 = new SomeObject();
obj1.SomeMethod(args);


SomeMethod

public void SomeMethod(*Some Args*){
    AnotherObject obj2 = new AnotherObject();
    Obj2.OtherMethod();
}


在我的测试中,我不在乎Obj2.OtherMethod()的实际功能,我希望测试忽略它。因此,我认为生成存根将为我修复该存根,但是我不确定该如何做。

最佳答案

这是一种方法。如果您具有另一个对象实现的接口(例如,IAnother,该接口至少将另一个方法作为方法),则您的常规执行路径会将另一个对象的实例传递给SomeMethod。

然后,为了进行测试,您可以传递一个实现IAnother接口的模拟对象-通过使用模拟框架或自己编码。

因此,您将拥有:

Public void SomeMethod(IAnother anotherObject)
{
  anotherObbject.OtherMethod();
}




Public class MyMock : IAnother...


供测试用 -

IAnother another = new MyMock();
..SomeMethod(myMock)


但是在真实代码中

IAnother = new AnotherObject()...


你明白了。

关于.net - 在.NET中生成 stub 或模拟方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15296197/

10-11 05:57