所以我想说我有一个班级
class JustAClass() {
Stirng justAField = "nothing";
}
现在我正在测试这个类,我将它放入模拟
JustAClass realClass = newJustACLass();
JustAClass spyClass = Mockito.spy(realClass);
spyClass.justAField = "something"
问题是:realClass.justAField
现在等于什么?
编辑:回应@fge 这并没有失败。
CSVExport spyClass = Mockito.spy(testClass);
FileOutputStream wFile = Mockito.mock(FileOutputStream.class);
spyClass.wFile = wFile;
Mockito.doThrow(IOException.class).when(spyClass).createBlankWorkbook();
spyClass.export(testEnabledFields);
Mockito.doThrow(IOException.class).when(wFile).close();
spyClass.export(testEnabledFields);
现在,testClass中的wFile是模拟还是原始的?
答案 0 :(得分:1)
Mockito 不会委托对传递的实例进行调用,而是实际创建了它的副本。因此,如果您保留真实实例并与之交互,请不要期望间谍知道这些交互及其对实际实例状态的影响。推论是,当在间谍上调用未取消的方法而不是在实例上调用时,你不会看到对实例的任何影响