我正在编写一个单元测试,执行如下逻辑:
SomeObject obj1 = new SomeObject();
obj1.SomeMethod(args);
内部SomeMethod
:
public void SomeMethod(*Some Args*){
AnotherObject obj2 = new AnotherObject();
Obj2.OtherMethod();
}
在我的测试中,我不关心Obj2.OtherMethod()真正做了什么,我希望测试忽略它。所以我认为生成一个存根将为我修复它,但我不知道该怎么做。
答案 0 :(得分:3)
这是一种方法。如果你有一个AnotherObject实现的接口(比如IAnother,它至少有AnotherMethod作为方法),你的正常执行路径会将AnotherObject的实例传递给SomeMethod。
然后,为了测试,您可以传递一个实现IAnother接口的模拟对象 - 通过使用模拟框架或自己编码。
所以你有:
Public void SomeMethod(IAnother anotherObject)
{
anotherObbject.OtherMethod();
}
和
Public class MyMock : IAnother...
进行测试 -
IAnother another = new MyMock();
..SomeMethod(myMock)
但是在实际代码中
IAnother = new AnotherObject()...
你明白了。