改变一个模拟间谍的领域



假设我有一个class

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现在是模拟的,还是原始的?

从api文档中取出http://docs.mockito.googlecode.com/hg-history/be6d53f62790ac7c9cf07c32485343ce94e1b563/1.9.5/org/mockito/Spy.html

Mockito 委托调用传递的实际实例,相反,它实际上创建了它的副本。因此,如果您保留真实实例并与之交互,不要期望监视程序能够意识到这些交互及其对真实实例状态的影响。由此推论,当一个未存根的方法在spy上被调用而不是在真实实例上被调用时,您将不会看到对真实实例

的任何影响。

相关内容

  • 没有找到相关文章

最新更新