MyClass{
public void myfunction(){
AnotherClass c=new AnotherClass();
c.somethod();//This method sets some values of the AnotherClass object c;
}
}
我有上面的场景要测试。如何检查 AnotherClass 对象 c 的值是否设置正确。我明白我必须使用Mock对象对于这些。但是无法弄清楚是怎么回事,因为在这里我不能将AnotherClass的模拟对象传递给myfunction,因为上面的设计。可以有人帮助我吗?
答案 0 :(得分:1)
如果你真的想这样做,应该重新设计如下(如Dan也建议的那样)
import org.junit.Test;
import org.mockito.Mockito;
public class TestingMock {
@Test
public void test() {
MyClass target = Mockito.spy(new MyClass());
AnotherClass anotherClassValue = Mockito.spy(new AnotherClass());
Mockito.when(target.createInstance()).thenReturn(anotherClassValue);
target.myfunction();
Mockito.verify(anotherClassValue).somethod();
}
public static class MyClass {
public void myfunction(){
AnotherClass c = createInstance();
c.somethod();//This method sets some values of the AnotherClass object c;
}
protected AnotherClass createInstance() {
return new AnotherClass();
}
}
public static class AnotherClass {
public void somethod() {
}
}
}
您将看到注释掉c.somethod()会使测试失败。 我正在使用Mockito。