gpt4 book ai didi

java - 改变mockito spy 的领域

转载 作者:太空宇宙 更新时间:2023-11-04 06:47:24 25 4
gpt4 key购买 nike

假设我有一个类

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 不会将调用委托(delegate)给传递的真实实例,而是实际上创建它的副本。因此,如果您保留真实实例并与其交互,则不要指望 spy 能够意识到这些交互及其对真实实例状态的影响。推论是,当在 spy 上调用未 stub 的方法而不是在真实实例上调用时,您不会看到对真实实例有任何影响

关于java - 改变mockito spy 的领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23792500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com