在.NET中生成存根或模拟方法

时间:2013-03-08 14:25:10

标签: .net unit-testing testing stub

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

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

内部SomeMethod

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

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

1 个答案:

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

你明白了。