我正在编写执行逻辑的单元测试,如下所示:
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/