【发布时间】:2019-08-13 10:16:46
【问题描述】:
我正在为一个类编写单元测试,我需要模拟对同一类中方法的调用。
//My class:
public class Class {
public void functionA(arguments){
...
String s3 = functionB(s1, s2);
}
public String functionB(String s1, String s2){
...
return s3;
}
}
//My Test:
@Test
public void functionA_Test(){
Class class = new Class(dependency);
Class spyClass = spy(class);
mockString = "this is a mock";
when(spyClass.functionB(any(),any()).thenReturn(mockString);
spyClass.functionA(arguments);
}
当我调试测试函数时,到达when(spyClass.functionB(any(),any()).thenReturn(mockString);后,程序跳转到主类,在functionB内,运行它。我想要的是在从functionA 调用functionB 时自动分配s3=mockString。
【问题讨论】:
-
为什么要模拟这个调用?如果你测试这个
Class(顺便说一句:这是一个非常不好的名字),它应该调用自己的方法以及所有协作者的方法。
标签: java testing junit mocking mockito