我是Mockito的新手,我想为一些遗留代码编写单元测试。在测试我的特定场景时,我确实尝试了几种使用mockito的技术,但我无法找到我的用例的解决方案。这是我的情景:
我有方法A(对数据进行本地处理)和方法B(对数据进行一些远程处理)。方法A依次调用我的方法B.我想调用方法A,当它又调用方法B时,我想从方法B返回一个预定义的值,让我们说一个文件列表。以下是Test类和实际类的示例代码:
Myclass mc = Mockito.mock(MyClass.class);
when(mc.methodB(param1,param2)).thenReturn(fileSet); // returns mocked fileSet (set of files)
when(mc.methodA(param1,param2)).thenCallRealMethod(); //calls real method A
mc.methodA(param1,param2); //does not return the mocked value from methodB
class MyClass{
public Set<File> methodB(param1,param2){
//some processing
return fileSet;
}
public void methodA(param1,param2){
//some processing
Set<FileSet> fileSet = methodB(param1,param2);
//some more processing on returned files
}
}
我创建了一个我的类的模拟,并确保当我调用方法A时,方法A的实际方法调用发生,当我调用方法B时,返回模拟结果。
如果我分别测试方法A和方法B它可以工作,但是当我调用方法A而后者调用方法B时,它不会从方法B返回我的模拟值。
这不是做这个电话的正确方法,还是我错过了什么?