2

我正在编写一个执行如下逻辑的单元测试:

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

内部SomeMethod

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

在我的测试中,我不关心 Obj2.OtherMethod() 的真正作用,我希望测试忽略它。所以我认为生成一个存根会为我修复它,但我不知道该怎么做。

4

1 回答 1

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()...

你明白了。

于 2013-03-08T14:30:53.560 回答