【发布时间】:2013-11-26 08:03:24
【问题描述】:
MyClass{
public void myfunction(){
AnotherClass c=new AnotherClass();
c.somethod();//This method sets some values of the AnotherClass object c;
}
}
我有上面的场景要测试。如何检查AnotherClass对象c的值是否设置正确。我知道我必须使用Mock Objects对于这些。但是由于上述设计,我无法将 AnotherClass 的模拟对象传递给 myfunction 。任何人都可以帮助我吗?
【问题讨论】:
-
尝试测试调用 myfunction() 方法的结果。如果变量 'c' 是方法局部变量,当您调用 c.somethod() 时会发生什么?什么是外部可观察的结果?
-
结果无法从外部获取。 c.somemethod() 正在设置在 myfunction() 中创建的 c 的值
-
您应该对以某种形式提供给外部的功能进行单元测试。如果做 c.somethod() 没有做任何外部可见的事情,那么恕我直言,你不需要对它进行单元测试
-
我同意@DevBlanked,您应该只尝试测试外部可见的内容。我猜您的示例是示例代码,因此缺少一些可能使其可测试的实现细节。例如,如果
c被传递给其他一些可模拟对象,则可以使用捕获并且可以断言c的值。如果做不到这一点,如果您真的想知道是否调用了somethod或者是否更改了c,则需要重新设计。